Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 MySQL更新问题_Php_Mysql - Fatal编程技术网

Php MySQL更新问题

Php MySQL更新问题,php,mysql,Php,Mysql,当名字和姓氏匹配时,这会正确地更新数据库,如果不匹配,则不会影响数据库。我唯一的问题是我总是显示更新失败的未知用户消息。我做错了什么?谢谢。你可能需要换一种方式来做 $result=mysql_query(" UPDATE xxxxxx_users SET User_Password='$Password' WHERE FstName='$First' AND LstName='$Last'",$db) or die ("Password update successful!"); echo

当名字和姓氏匹配时,这会正确地更新数据库,如果不匹配,则不会影响数据库。我唯一的问题是我总是显示更新失败的未知用户消息。我做错了什么?谢谢。

你可能需要换一种方式来做

$result=mysql_query(" UPDATE xxxxxx_users SET User_Password='$Password' WHERE FstName='$First' AND LstName='$Last'",$db)  or die ("Password update successful!");
echo "Update failed, unknown user";
如果第一部分(mysql_查询)的计算结果为true,则无需计算第二部分或第二部分(die)。您可以使用和来代替

请阅读有关SQL注入的内容

对您的编码风格的建议:

大概是这样的:

$result=mysql_query(" UPDATE xxxxxx_users SET User_Password='$Password' WHERE FstName='$First' AND LstName='$Last'",$db)
     or die ("Update failed, unknown user"); 

echo "Password update successful!";
更具可读性。

当SQL查询成功时,函数返回true:

对于其他类型的SQL语句, 插入、更新、删除、删除等, mysql_query()在成功时返回TRUE 或错误为FALSE

您的代码假设查询返回受影响的行数。为此,请使用该功能:

if ($result)
   ...success
else 
   ...fail

不管结果如何,只会给我一条“密码更新成功”的消息。请记住,mysql\u受影响的\u行仅在数据实际更改时返回一个大于0的值。例如,如果您有一条记录('firstname'、'lastname'、'xyz'),您将获得
0
UPDATE foo SET User\u Password='xyz'WHERE FstName='firstname'和LstName='lastname'
,尽管有一条记录与WHERE子句匹配。
$result=mysql_query(" UPDATE xxxxxx_users SET User_Password='$Password' WHERE FstName='$First' AND LstName='$Last'",$db)
if (mysql_affected_rows() > 0)
  die ("Password update successful!");
else
  echo "Update failed, unknown user";