2009-07-29 21 views
1

私がやろうとしていることは次のとおりです。いくつかのフィールドを同じ値に変更して、任意の数の行を更新します。複数の行を更新するPHPから

$var = "1 3 5 7 9"; 
$query = "UPDATE tablename SET seen_before = 1 WHERE id = SET ($var);" 

私の質問はこれです:私はセットでのlookinときWhere句の正確な構文はどのようなものです、そしてどのように私はPHPの変数を介して設定項目を渡します。

おかげで、
マイケル

答えて

6
$ids = "1, 3, 5, 7, 9"; 
$query = "UPDATE tablename SET seen_before = 1 WHERE id IN ($ids)"; 

あなたのIDはダイナミックであり、彼らはおそらくあり、適切にSQLクエリのためにそれらをエスケープするために、このようなものを使用している場合:

// Assuming $ids it's coming from an untrusted source, like $_GET 
$ids = array(1, 3, 5, 7, 9); 
$ids = array_map('intval', $ids); 
$ids = implode(', ', $ids); 

$query = "UPDATE tablename SET seen_before = 1 WHERE id IN ($ids)"; 
+0

@Ionutあなたは$ idsか$ varのどちらかを修正する必要があります。 – hobodave

+0

ありがとう@hobodave、修正済み。 –

+0

ありがとう、私の入力は 'trimmedされていた。 INは文字列のみで動作しますか? – Dirk