Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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_Error Handling_Rows Affected - Fatal编程技术网

Php 当查询中传递的数据与数据库中已有的数据相同时,如何确定MySQL更新查询是否成功?

Php 当查询中传递的数据与数据库中已有的数据相同时,如何确定MySQL更新查询是否成功?,php,mysql,error-handling,rows-affected,Php,Mysql,Error Handling,Rows Affected,假设您有一个表单,其中包含来自数据库的预填充数据,您允许用户进行更改并保存表单。如果用户单击save按钮而不进行任何更改,MySQL实际上不会执行写入操作,因此受影响的_行将返回0 我理解这种行为,但是除了检查受影响的_行数之外,确定更新是否失败的最佳实践是什么 区分实际失败的更新和“成功”但导致0个受影响行的更新的最佳做法是什么?这样我就可以向用户提供反馈了。只需检查执行查询后是否没有出现错误。 如果您使用的是mysql,请选中: 如果(!mysql_error())打印“一切正常” 与此相同

假设您有一个表单,其中包含来自数据库的预填充数据,您允许用户进行更改并保存表单。如果用户单击save按钮而不进行任何更改,MySQL实际上不会执行写入操作,因此受影响的_行将返回0

我理解这种行为,但是除了检查受影响的_行数之外,确定更新是否失败的最佳实践是什么


区分实际失败的更新和“成功”但导致0个受影响行的更新的最佳做法是什么?这样我就可以向用户提供反馈了。

只需检查执行查询后是否没有出现错误。
如果您使用的是
mysql
,请选中:
如果(!mysql_error())打印“一切正常”
与此相同。

如果更新由于语法错误而“失败”,或者其他mysql将在实际的mysql查询中返回错误代码,受影响的行将返回另一个错误

例如,Php:

$qry = mysql_query("update blah where IamaSyntaxerror,33");
if ($qry === FALSE) { echo "an error has occured"; }

else  { mysql_affected_rows() == 0  means no updates occured
如果查询失败,[infected_rows()][1]为-1,而不是零

[1] :


如果没有对行进行任何更改(相同的值),或者mysql没有找到要更新的行,则可能返回0。由于语法错误,它将只返回-1

mysql_query() or die('error');
$conn = mysql_query();
if(!$conn) {//Error code here}
try {
  $conn = mysql_query();
  if (!$conn) throw new Exception("mysql Error");
} catch(Exception $e) {
  echo $e->getMessage();
}
变体2:

mysql_query() or die('error');
$conn = mysql_query();
if(!$conn) {//Error code here}
try {
  $conn = mysql_query();
  if (!$conn) throw new Exception("mysql Error");
} catch(Exception $e) {
  echo $e->getMessage();
}
变体3:

mysql_query() or die('error');
$conn = mysql_query();
if(!$conn) {//Error code here}
try {
  $conn = mysql_query();
  if (!$conn) throw new Exception("mysql Error");
} catch(Exception $e) {
  echo $e->getMessage();
}

$sql=“sql语句”;mysql_query($sql)或die(mysql_error());如果(mysql_-infected_-rows()| | mysql_-infected_-rows()==0){//no error}否则{//error}
更新不会因为您没有更新而返回错误。查询执行正常
mysql\u受影响的行($db)
mysqli\u受影响的行($db)
是正确的。