我有一个数据库照片,其中存储了成员记录,它有名称, au_id, 位置,< / b> 联系&amp; 电子邮件列。有一个安全的面板,管理员可以在其中更改组的正文成员的详细信息。此处再次显示完整表单,其中值存储在数据库中,因此如果管理员想要更改他/她可以在此处执行的任何值并将该表单提交到更新记录。成功提交
$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';
}
它提供了成功更新的消息,但是当我再次检查记录时,没有任何改变。我怎么能弄清楚这个问题
答案 0 :(得分:3)
$save="UPDATE photos SET name = '".$name."', au_id = '".$au_id."', position = '".$position."', cell = '".$contact."', email = '".$email."' WHERE id = '6' ";
$result=mysql_query($save);
答案 1 :(得分:0)
$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';
}
答案 2 :(得分:0)
试试这个:
使用mysql_affected_rows()
$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';
}
mysql_已弃用功能
答案 3 :(得分:0)
mysql_num_rows不应该用于不返回结果集的SQL查询,例如UPDATE,DELETE等。
如果mysql_connect正确完成mysql连接并且使用mysql_select_db正确选择了db,那么mysql_query在某些情况下似乎可以工作。所以你应该检查SELECT查询是否在那里工作
但是,如果其中一个字段包含“'”,则表示您的SQL查询已折叠。这不仅是导致错误的问题,而且是允许“SQL注入”的漏洞。你应该使用占位符。如果由于某种原因无法使用占位符,则必须使用mysql_real_escape_string来转义字段。
答案 4 :(得分:0)
正如您在问题中提到的那样,列是: -
name, au_id , position , contact & email
我的代码中有两件事: -
1)您将提及contact
列,并使用cell
进行更新
2)您尚未声明$contact
变量。
请使用正确的列名运行查询,如果ID不是字符串,则无需使用id = '6'
即可使用id = 6
答案 5 :(得分:0)
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()
会在成功时返回资源,或者在出错时返回FALSE。检查此link
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()
成功时返回TRUE,错误时返回FALSE。
因此,您在执行查询时得到true
或false
,显然mysql_num_rows(true)
毫无意义。