mysqli_affected_rows总是返回1

时间:2012-12-06 20:02:42

标签: php mysql

我遇到了mysqli_affected_rows的问题,它一直返回1,甚至更新都没有影响。

$dbConnect = mysql_connect($dbHost, $dbUser, $dbPass);
$dbSelect = mysql_select_db($dbName, $dbConnect);

$sqlprove = mysql_query('UPDATE '.tblAVB.' SET a= "1" WHERE id= "'.$_POST['id'].'" AND Active = "1" ');

$isprove = mysqli_affected_rows($sqlprove);

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

如果您使用的是mysqli,那么您只能使用 mysqli前缀函数。您不能与已弃用的mysql_query方法混用和匹配。

事实上,如果您使用的是mysql_query,则根本不应该使用mysqli

如果您刚入门,则应使用PDO代替。 mysqli接口比传统接口更好,但与PDO相比,它相当烦人且非常烦人。

在任何情况下,必须要非常小心,始终对任何和所有值使用proper SQL escaping

答案 1 :(得分:0)

我有这个,它有用,但我不想在代码中间使用面向对象的风格:

$mysqli->query('UPDATE '.tblAVB.' SET a= "1" WHERE id= "'.$_POST['id'].'" AND Active = "1" ');

$prove = $mysqli->affected_rows;

并且程序风格不起作用!!!!! 因为我在查询之前将它连接到db而不使用$ link !!!!

$link = mysqli_connect("localhost", "my_user", "my_password", "world");
mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50");
printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));

是因为我使用 mysql 而不是mysqli? 有没有办法让mysql受影响? reference