簡體   English   中英

如何使用一個查詢更新多行

[英]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.

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