Tek bir sorgu birden fazla satır güncellemek için nasıl

3 Cevap php

Ben Postgresql + PHP kullanabilirsiniz.

Bu tabloyu var ki:

Books ( id, title, year )

ve PHP başlıkları bu dizi:

$titles = array ("bible","kafka","Book of Eli");

şimdi başlık yukarıda $ başlıkları dizideki tüm satırları güncellemek istiyorum.

Yani böyle bir sorgu gerekir:

UPDATE books SET year = '2001-11-11' WHERE title is in $titles;

Tek sorgu ile mümkün mü? Yoksa döngü İÇİN kullanmanız gerekiyor?

3 Cevap

Bu aslında oldukça yakın, mümkün.

SQL için sözdizimi şu şekildedir:

UPDATE books SET year = '2001-11-11' WHERE title IN ('bible','kafka','Book of Eli');

PHP kullanarak o oluşturmak için, böyle bir şey yapmak istersiniz:

$query = "UPDATE books SET year = '2001-11-11' WHERE title IN ('" . implode("','", $titles) . "');'";

PHP implode() işlevi bir dize kullanarak birlikte dizi elemanları katılır, bu yüzden ilk ve son ' dizesindeki konduğunu, ',' tüm bunların arasında koymak elle.

Başlıkları herhangi bir kesme işareti içeren bu şu anda başarısız olacağını unutmayın. Bu bir olasılık ise bu kaçmak gerekir.

: Eğer bir virgülle ayrılmış bir dizeye dizi dönelim olacak implode() işlevini kullanabilirsiniz

$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 .")"

Ne hakkında

$sql = "UPDATE books SET year = '2001-11-11' WHERE title in ('".implode("','",$titles)."')";