[英]mysqli->query returns true on update, but no rows affected
嘗試更新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-> error為空。
我試圖運行的查詢是:
UPDATE Payments_scheduled SET active = 0,其中id = 1或id = 2
列:
id-類型:int-長度:10-額外:unsigned,pk
活動-類型:tinyint-長度:1-額外:無符號
更新0行不算作失敗,僅表示沒有基於選擇條件要更新的行。 在許多情況下,這是預期的行為,因此返回true。
好的,所以我發現了問題。
我正在使用某個方法啟動事務,但從未上班。
我為浪費您的時間而道歉,您無法通過查看我提供的代碼來解決問題。 我確定問題出在該查詢方法內(但我錯了)。
我將投票給試圖幫助您的每個人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.