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