Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更新数据库中的多个字段_Php_Mysql_Sql - Fatal编程技术网

Php 如何更新数据库中的多个字段

Php 如何更新数据库中的多个字段,php,mysql,sql,Php,Mysql,Sql,我有一个储存会员记录的数据库照片,里面有姓名、身份证、职位、联系人和电子邮件栏。有一个安全面板,管理员可以在其中更改组的主体成员的详细信息。完整的表单在这里再次显示,其中的值存储在数据库中,所以若管理员想要更改任何值,他/她可以在这里执行,并将该表单提交给更新记录。关于成功提交 $name=$_POST['name']; $au_id=$_POST['au_id']; $position=$_POST['position']; $contact=$_POST['contact']; $email

我有一个储存会员记录的数据库照片,里面有姓名、身份证、职位、联系人和电子邮件栏。有一个安全面板,管理员可以在其中更改组的主体成员的详细信息。完整的表单在这里再次显示,其中的值存储在数据库中,所以若管理员想要更改任何值,他/她可以在这里执行,并将该表单提交给更新记录。关于成功提交

$name=$_POST['name'];
$au_id=$_POST['au_id'];
$position=$_POST['position'];
$contact=$_POST['contact'];
$email=$_POST['email'];
我无法更新特定成员的记录。我的数据库中有主键id。我正在使用:

$save="UPDATE photos SET name = '$name', au_id = '$au_id', position = '$position', cell = '$contact', email = '$email' WHERE id = '6' ";
$result=mysql_query($save);
并进行了检查,以便我知道查询是否成功运行

if (mysql_num_rows($result))
{
   echo 'successfully updated';
}
else
{
  echo 'not updated';
}
它正在发送成功更新的消息,但当我再次检查记录时,没有任何更改。我怎样才能解决这个问题

试试这个:
$save="UPDATE photos SET name = '$name', au_id = '$au_id', position = '$position', cell = '$contact', email = '$email' WHERE id = '6' ";

if ($result=mysql_query($save))
{
   echo 'successfully updated';
}
else
{
  echo 'not updated';
}
使用


mysql\u是不推荐使用的函数

mysql\u num\u行不应用于不返回结果集的SQL查询,如更新、删除等。
如果mysql\u connect正确地完成了mysql连接,并且使用mysql\u select\u db正确地选择了数据库,那么在某些情况下mysql\u query本身似乎可以工作。因此,您应该检查SELECT查询是否在那里工作。

但是,例如,如果其中一个字段包含“”,则SQL查询将被折叠。这不仅是一个导致错误的问题,而且是一个允许“SQL注入”的漏洞。您应该使用占位符。如果由于某种原因无法使用占位符,则必须使用mysql\u real\u escape\u字符串来转义字段。

正如您在问题列中提到的:

姓名、身份证、职位、联系人和电子邮件

我在您的代码中发现了两件事:-

1) 您将被告知
联系人
栏以及使用
单元格进行更新

2) 您尚未声明
$contact
变量


请使用正确的列名运行查询,如果id不是字符串,则无需使用
id='6'
您可以使用
id=6

来选择、显示、描述、解释和其他返回结果集的语句,
mysql\u query()
成功时返回资源,错误时返回FALSE。请检查此项

对于其他类型的SQL语句,INSERT、UPDATE、DELETE、DROP等,
mysql\u query()
成功时返回TRUE,错误时返回FALSE


因此,在执行查询时会得到
true
false
,显然
mysql_num_rows(true)
毫无意义。

echo$save
并检查查询是否正确。
if(!$result){echo mysql_error();}
检查$result返回false的原因。顺便说一句,您总是使用id=6。可能id=6的列已经更新了?@Royal我刚刚粘贴了此行id以了解其他情况,否则id将始终根据记录预览页面中每行前面的“编辑”按钮进行更改。很高兴为您提供帮助:)
$save="UPDATE photos SET name = '".$name."', au_id = '".$au_id."', position = '".$position."', cell = '".$contact."', email = '".$email."' WHERE id = '6' ";
$result=mysql_query($save);
$save="UPDATE photos SET name = '$name', au_id = '$au_id', position = '$position', cell = '$contact', email = '$email' WHERE id = '6' ";

$result=mysql_query($save);
$cnt=mysql_affected_rows();
if($cnt>0)
{
   echo 'successfully updated';
}
else
{
    echo 'not updated';
}