即使更新实际发生,mysql_affected_rows()也会为UPDATE语句返回0

Ale*_*ore 19 php mysql

我试图在一个简单的mysql更新查询中获取受影响的行数.但是,当我在下面运行此代码时,PHP的mysql_affected_rows()总是等于0.无论foo = 1(在这种情况下函数应该正确返回0,因为没有更改行),或者foo当前等于其他整数(在这种情况下,函数应返回1).

$updateQuery = "UPDATE myTable SET foo=1 WHERE bar=2";
mysql_query($updateQuery);
if (mysql_affected_rows() > 0) {
    echo "affected!";
}
else {
    echo "not affected"; // always prints not affected
}
Run Code Online (Sandbox Code Playgroud)

UPDATE语句本身有效.INT在我的数据库中被更改.我还仔细检查了数据库连接没有事先关闭或任何时髦.请记住,mysql_affected_rows不一定要求您传递连接链接标识符,尽管我也尝试过.

有关函数的详细信息:mysql_affected_rows

有任何想法吗?

Mri*_*tha 21

较新版本的MySQL非常聪明,可以查看修改是否完成.让我们说你启动了UPDATE声明:

UPDATE tb_Employee_Stats SET lazy = 1 WHERE ep_id = 1234
Run Code Online (Sandbox Code Playgroud)

让我们说如果列的值已经是1; 然后没有更新过程发生,因此mysql_affected_rows()将返回0; 否则如果列惰性具有其他值而不是1,则返回1.除人为错误外没有其他可能性.

  • 就是这样,让我的生活变得艰难。现在我可以更新我的代码来解决这个问题。 (2认同)

Inn*_*gen -1

我很艰难!

我正要告诉检查该函数是否被调用多次!

只是一点建议:

尝试使用 isset() 和 POST / GET 或类似的东西;

if ( isset( $_POST['Update'] == 'yes' ) ) :

// your code goes here ...

endif;
Run Code Online (Sandbox Code Playgroud)

希望它是清晰和有用的,Ciao:)