簡體   English   中英

mysqli-> query更新時返回true,但不影響任何行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM