php - 在单个查询 php mysql 中更新多行
问题描述
我正在尝试在单个查询中更新多行。我的代码中没有更新数据。我正在尝试加入这两个表。当用户输入号码时。将显示通过外键连接的 2 个表中的数据。表 1 中的数据将被更新。表 2 中的列没有更新。我需要根据唯一 ID 更新第二个表
if($_REQUEST["profile"] == "profile")
{
$Id = $_REQUEST["id"];
$firstname = mysql_real_escape_string($_REQUEST["firstname"]);
$serial = mysql_real_escape_string($_REQUEST["serial"]);
$dom = mysql_real_escape_string($_REQUEST["dom"]);
$idno = $_REQUEST["idno"];
$pow = mysql_real_escape_string(stripslashes($_REQUEST["pow"]));
$address = mysql_real_escape_string(stripslashes($_REQUEST["address"]));
$bookno = mysql_real_escape_string(stripslashes($_REQUEST["bookno"]));
$zone = mysql_real_escape_string(stripslashes($_REQUEST["zone"]));
$mobile = mysql_real_escape_string(stripslashes($_REQUEST["phone"]));
$phone = mysql_real_escape_string(stripslashes($_REQUEST["mobile"]));
$mothertongue=mysql_real_escape_string(stripslashes($_REQUEST["mothertongue"]));
$nof=mysql_real_escape_string(stripslashes($_REQUEST["nof"]));
$email=mysql_real_escape_string(stripslashes($_REQUEST["email"]));
$nom=$_REQUEST["nom"];
$nofemale=$_REQUEST["nofemale"];
mysql_query("UPDATE profile SET firstname='".$firstname."',serial='".$serial."',dom='".$dom."',idno='".$idno."',pow='".$pow."',address='".$address."',bookno='".$bookno."',
zone='".$zone."',phone='".$mobile."',mobile='".$phone."',mothertongue='".$mothertongue."',email='".$email."',nof='".$nof."',nom='".$nom."',nofemale='".$nofemale."' WHERE id = '".$_POST['id']."' " ) or die(mysql_error());
for($i=0;$i<count($_REQUEST['slno1']);$i++)
{
$mid=$_REQUEST['mid'][$i];
$slno1 = mysql_real_escape_string(stripslashes($_REQUEST["slno1"][$i]));
$name1 = mysql_real_escape_string(stripslashes($_REQUEST["name1"][$i]));
$rhof1 = mysql_real_escape_string(stripslashes($_REQUEST["rhof1"][$i]));
$dob1 = mysql_real_escape_string(stripslashes($_REQUEST["dob1"][$i]));
$dobapt1 = mysql_real_escape_string(stripslashes($_REQUEST["dobapt1"][$i]));
$doc1 = mysql_real_escape_string(stripslashes($_REQUEST["doc1"][$i]));
$doconf1 = mysql_real_escape_string(stripslashes($_REQUEST["doconf1"][$i]));
$qualification1 = mysql_real_escape_string(stripslashes($_REQUEST["qualification1"][$i]));
$school1 = mysql_real_escape_string(stripslashes($_REQUEST["school1"][$i]));
$occupation1 = mysql_real_escape_string(stripslashes($_REQUEST["occupation1"][$i]));
$run=mysql_query("UPDATE member SET
slno1='".$slno1."',name1='".$name1."',rhof1='".$rhof1."',dob1='".$dob1."',dobapt1='".$dobapt1."',doc1='".$doc1."',doconf1='".$doconf1."',qualification1='".$qualification1."' WHERE mid = '".$mid."' " ) or die(mysql_error());
}
}
解决方案
请使用 PDO,这样您就不必转义字符串,从而使您的代码更易于阅读。您的查询使用了太多引号,仅此一项就很容易失败。请使用以下示例,这应该可以帮助您成功。
基本 PDO 更新: https ://www.w3schools.com/php/php_mysql_update.asp
绑定参数: https ://www.w3schools.com/php/php_mysql_prepared_statements.asp
推荐阅读
- .net - .Net 具有十六进制地址的多行正则表达式
- docker - docker-compose down 和 docker-compose kill 有什么区别?
- javascript - 元素未在反应状态上添加数组
- amazon-web-services - 如何让 AWS 作为 OIDC 或 SAML 提供商的 IdP 工作?
- python - 如何使用 fig.canvas.draw() 制作动画?
- javascript - 解决这个代码战挑战的更短更有效的方法?
- c# - WPF .NET 应用程序无法连接到不同网络上的 SQL Server
- ubuntu - 以其他用户身份运行 Jenkins - 无法在启动时运行
- java - Liquibase 使用 Postgis“几何”类型创建表
- javascript - 你怎么能把它变成一个dropup?