mysqli_affected_rows()返回-1但查询有效

时间:2014-05-29 23:49:47

标签: php mysql netbeans mysqli xdebug

我所有的mysql函数似乎都遇到了这个问题。简单的insert语句有效,但是当我检查受影响的行时,它返回-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。
  • 连接对象中未显示错误消息或错误编号。

1 个答案:

答案 0 :(得分:2)

我有完全相同的问题。我已经调查了Netbeans和Xdebug的问题,看来这是MySQLi扩展本身的一个错误。已根据bug report 制作。与此同时,您可以使用更宽容的表达式,例如

if (mysqli_sqlstate($dbc) == 00000) {
//your code
}

继续调试剩余的代码。