[英]why does php mysql update returns a success but never updated the column?
[英]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.