【问题标题】:mysqli_affected_rows() returns -1 but query worksmysqli_affected_rows() 返回 -1 但查询有效
【发布时间】:2014-05-29 23:49:46
【问题描述】:

我所有的 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,然后再进行受影响的行检查。
  • 在连接对象中看不到错误消息或错误号。

【问题讨论】:

  • if (mysqli_affected_rows($this->connection, $query)>0)怎么样
  • 没用,还是-1
  • 你能粘贴你的查询吗,mysqli_affected_rows 在查询错误时返回-1
  • 你认为它为什么会返回-1
  • 我认为你的调试器有错误stackoverflow.com/questions/23848434/…

标签: php mysql netbeans mysqli xdebug


【解决方案1】:

我遇到了完全相同的问题。我已经调查了 Netbeans 和 Xdebug 的问题,这似乎是 MySQLi 扩展本身的一个错误。已制作相应的bug report 。与此同时,您可以改用更宽容的表达方式,例如

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

继续调试剩余的代码。

【讨论】:

  • 体面的想法检查错误至少如果不是受影响的行...但是,该错误报告表明 $dbc->stat 导致受影响的行变为-1,但我没有使用 stat功能。
  • 谢谢!该错误目前在 Linux Mint 19 上仍然存在,带有 MariaDB Ver 15.1 Distrib 10.1.38-MariaDB 和 php 7.2.17。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2021-10-10
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
相关资源
最近更新 更多