[英]How to update multiple rows with one single query
我使用Postgresql + PHP。
說我有這張桌子:
Books ( id, title, year )
和PHP中的這個標題數組:
$titles = array ("bible","kafka","Book of Eli");
現在,我想更新標題在上述$ titles數組中的所有行。
所以我需要這樣的查詢:
UPDATE books SET year = '2001-11-11' WHERE title is in $titles;
一個查詢可能嗎? 還是我需要使用FOR循環?
有可能,您實際上距離很近。
對於SQL,語法如下所示:
UPDATE books SET year = '2001-11-11' WHERE title IN ('bible','kafka','Book of Eli');
要使用PHP生成該代碼,您需要執行以下操作:
$query = "UPDATE books SET year = '2001-11-11' WHERE title IN ('" . implode("','", $titles) . "');'";
PHP implode()
函數使用字符串將數組元素連接在一起,因此我將','
放在所有元素之間,並將初始和最終'
手動放入字符串中。
請注意,如果任何標題包含撇號,當前操作將失敗。 如果有這種可能,您將需要逃避這些。
您可以使用implode()函數,該函數可讓您將數組轉換為逗號分隔的字符串:
$titles = array ("bible","kafka","Book of Eli");
$comma_separated = implode(",", $array)
$sql = "UPDATE books SET year = '2001-11-11' WHERE title is in (" . $comma_separated .")"
關於什么
$sql = "UPDATE books SET year = '2001-11-11' WHERE title in ('".implode("','",$titles)."')";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.