php - mysqli->query 在更新时返回 true,但没有行受影响

标签 php mysql oop mysqli

我在尝试更新 mysql 中的行时遇到了一些问题。

我尝试打印查询并在我的 sql 客户端中运行它,它会按预期更新行。

这一行:

$this->mysqli->query($query);

按预期返回 bool (true),并且根据 php 文档 (http://php.net/manual/en/mysqli.query.php) 是正确的。

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

public function query($query, $parameters = array()) {
    if ((is_array($parameters) && count($parameters) > 0) || (is_string($parameters) && !empty($parameters))) {
        $this->lastPrepared = true;

        if ($this->prepare($query) === false)
            return false;

        $this->bind((is_array($parameters) ? $parameters : array($parameters)));
        if ($this->execute() === false)
            return false;
    } else {
        $this->lastPrepared = false;

        if (!$this->stmt = $this->mysqli->query($query)) {
            debug('Query failed: (' . $this->mysqli->errno . ') ' . $this->mysqli->error);
            return false;
        }
    }

    return $this->stmt;
}

我四处搜索,发现了与我的问题类似的问题,但没有一个答案能帮助我找到解决方案。

编辑:好的,所以我现在可以看到 $this->mysqli->affected_rows;返回-1,表示有错误。然而,mysqli->errno 和 mysqli->error 是空的。

我尝试运行的查询是:

UPDATE payments_scheduled SET active = 0 WHERE id=1 OR id=2

列:

id - 类型:int - 长度:10 - 额外:无符号,pk

事件 - 类型:tinyint - 长度:1 - 额外:无符号

最佳答案

更新 0 行不算失败,它仅表示根据选择标准没有要更新的行。在许多情况下,这是预期的行为,因此返回 true。

关于php - mysqli->query 在更新时返回 true,但没有行受影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42678027/

相关文章:

php - 如何在 WordPress 中将标签更改为另一个名称

c++ - 如何将父方法重载到子方法

java - 从 Mega.nz 加载文件以在 java 项目中使用

php - 嵌套正则表达式...我一无所知!

javascript - 当文本输入不为空时发布数据 PHP

php - 查找某个项目在给定的多个数组中的哪个数组,并且该项目仅存在于 PHP/SQL 中的一个数组中

mysql - fail2ban 添加 PHP 函数

ruby-on-rails - 为什么 rails 助手不是更面向对象的?

javascript - 将带有 HTML 字符串的数组返回到 jquery $.post 方法

php - 如何防止 PHP 脚本运行多次?