我在尝试更新mysql中的行时遇到了一些问题。
我尝试打印查询并在我的sql客户端中运行它,并按预期更新行。
这一行:
$这 - > mysqli->查询($查询);
按预期返回bool(true),并根据php文档(http://php.net/manual/en/mysqli.query.php)正确。
失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回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->错误都是空的。
我尝试运行的查询是:
UPDATE payments_scheduled SET active = 0 WHERE id = 1 OR id = 2
列:
id - type:int - length:10 - extra:unsigned,pk
active - type:tinyint - length:1 - extra:unsigned
答案 0 :(得分:2)
更新0行不算作失败,它只是表示根据选择条件没有要更新的行。在许多情况下,这将是预期的行为,因此返回true。
答案 1 :(得分:0)
好的,所以我发现了问题。
我在一个方法中开始了一个交易,而且我从来没有参与过。
我为浪费你的时间道歉,你无法通过查看我提供的代码来解决问题。我确信问题出在该查询方法中(但我错了)。
我会投票支持你们每个人都试图提供帮助。