2 回答

TA貢獻1865條經驗 獲得超7個贊
根據的手冊中rowCount()
的注釋,
當更新具有相同值的Mysql表時,什么都沒有受到真正的影響,因此rowCount將返回0。
的PHP手冊中未明確記錄rowCount()
。但是,它記錄在MySQLUPDATE
文檔中,
如果將列設置為其當前值,MySQL會注意到這一點,并且不會對其進行更新。
結合
UPDATE返回實際更改的行數。
但是,請注意,如果PDO::MYSQL_ATTR_FOUND_ROWS => true
在定義PDO對象時添加該選項,則會更改此行為。使用該選項,它將返回受影響的行數,而不管它們的值實際上是否已更新(因此,只要發現匹配WHERE
條件的記錄,即使值沒有更改,它也將返回1 )。
所以你的代碼最終會被
$stmt->execute(); return $stmt->rowCount() ? 1 : 0;

TA貢獻1798條經驗 獲得超7個贊
您可以使用rowCount()
。如果某行受更新影響(即任何列值已更改),則該行將計為1。從MySQL手冊:
如果將列設置為其當前值,MySQL會注意到這一點,并且不會對其進行更新。
UPDATE返回實際更改的行數。
你之后$stmt->execute()
使用
if ($stmt->rowCount()) {
// some rows changed
// do something
}
如果您只想在發生更新時返回true / false值,則可以
return $stmt->rowCount() > 0;
或者,如果您未使用嚴格的類型匹配(例如===),則只需
return $stmt->rowCount();
- 2 回答
- 0 關注
- 212 瀏覽
添加回答
舉報