為了使用PDO 增強數據庫訪問,許多開發人員遇到了挑戰,特別是“WHERE...IN” IN”查詢。讓我們深入研究其中的複雜性,並發現在PDO 準備好的語句中使用項目列表的正確方法。
考慮一個場景,您需要根據表單中已檢查項目的清單從資料庫中刪除項目。 &&&]
$query = "DELETE FROM `foo` WHERE `id` IN (:idlist)"; $st = $db->準備($query); $st->execute(array(':idlist' => $idlist));$query = "DELETE FROM `foo` WHERE `id` IN (:idlist)"; $st = $db->prepare($query); $st->execute(array(':idlist' => $idlist));但是,這種方法通常會導致只刪除第一個 ID。這是因為 PDO 將逗號分隔的清單解釋為單一值,因此忽略後續 ID。 採用佔位符和參數要避免此問題,必須利用佔位符並綁定參數。此方法涉及用單獨的佔位符(問號)替換整個逗號分隔列表,並循環遍歷數組以將每個 ID 綁定到佔位符。以下是實現此目的的方法:$idlist = array('260','201','221','216','217','169','210','212' , '213'); $questionmarks = str_repeat("?,", count($idlist)-1) 。 「?」; $stmt = $dbh->prepare("從 `foo` 中刪除 `id` IN ($questionmarks)"); foreach ($idlist 作為 $id) { $stmt->bindParam(1, $id); }
$query = "DELETE FROM `foo` WHERE `id` IN (:idlist)"; $st = $db->prepare($query); $st->execute(array(':idlist' => $idlist));此修改後的方法可確保將每個 ID 視為單獨的參數,從而能夠準確執行查詢。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3