簡體   English   中英

PHP MySQL更新返回成功,但未更改任何行

[英]PHP MySQL Update returns success, but no rows are changed

我一直在嘗試通過PHP update數據庫,但是無法正常工作。 這是我正在使用的功能。 這就是全部PHP

function update($query, $values = "") {

        $success = false;
        $statement = $this->db->prepare($query);

        if (is_array($values)) {
            $success = $statement->execute($values);
            print("\nIt is an array");
        } else {
            $success = $statement->execute();
        }

        $statement->closeCursor();
        return $success;
}

這就是我所說的。

$data=array();
    $data[] = $FirstName;
    $data[] = $LastName;
    $data[] = $Email;
    $data[] = $AccessLevel;
    $data[] = $UserID;

try{
    $thisDatabase->db->beginTransaction();
    $query ="UPDATE Users SET FirstName=?, LastName=?, ContactEmail=?, AccessLevel=? WHERE UserID=?";
    $userData = $thisDatabase->update($query,$data);
}catch (PDOExecption $e){
    $thisDatabase->db->rollback();
    print "There was a problem with the query";
}

此函數返回1 (當我打印出$userData )。

這是我傳遞的$data數組。

Array(
    [0] => Jon
    [1] => Smith
    [2] => Jon@none.com
    [3] => 1
    [4] => 2
)

如果我在PHPmyadmin運行查詢,它將起作用。 注意:我確實必須為存儲為字符串的列添加引號。 UPDATE Users SET FirstName='Jon', LastName='Smith', ContactEmail='Jon@none.com', AccessLevel=1 WHERE UserID=2

那么,是否有人對我的問題在哪里或如何找到它有任何想法?


作為參考,我對select語句使用了類似的功能,並且效果很好。

function select($query, $values = "") {

        $statement = $this->db->prepare($query);

        if (is_array($values)) {
            $statement->execute($values);
        } else {
            $statement->execute();
        }
        $recordSet = $statement->fetchAll(PDO::FETCH_NUM);

        $statement->closeCursor();
        return $recordSet;
}

您沒有提交交易。 因此,您使用UPDATE所做的更改實際上並未保存在數據庫中。

try...catch塊之后添加$thisDatabase->db->commit() 當然,如果事務需要回滾,則不應調用此方法,因此請從catch塊中的函數返回或添加標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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