我所有的mysql函数似乎都有这个问题。简单的插入语句工作,但是当我检查受影响的行时,它返回-1
。
这工作,一个新的行插入到数据库中,但调试器显示mysqli_affected_rows作为-1
,因此else块得到运行:
$query = "INSERT INTO users (email, password) VALUES ('$email', '$password')";
mysqli_query($this->connection, $query) or die('Query failed in register.');
if (mysqli_affected_rows($this->connection)>0) {
//this doesnt get run,
}
else {
// this is run
}
为什么会发生这种情况?
编辑:- 我使用Netbeans, Xdebug, WAMP.
- 当我在连接创建后立即查看连接时,受影响的行已经设置为-1。
- 在执行成功的查询后,在执行受影响的行检查之前,连接仍然显示-1。
- 连接对象中没有错误消息或错误编号。
我也遇到了同样的问题。我已经调查了Netbeans和Xdebug的问题,似乎这是一个错误在MySQLi扩展本身。已经生成了相应的bug报告。与此同时,你可以使用一个更宽容的表达式,例如
if (mysqli_sqlstate($dbc) == 00000) {
//your code
}