0

私はすでにWHERE 句を使用してクエリに配列を渡すを読んだことがありますが、これは基本的に私が行っていることですが、整数ではなく文字列を使用しています。WHERE 句に問題があります。

$codes_imp = "'" . implode("','", $codes) . "'";
$passwords_imp = "'" . implode("','", $passwords) . "'";
$comments_imp = "'" . implode("','", $comments) . "'";

$set_pass_query = "INSERT INTO users (password, comments) VALUES ($passwords_imp, $comments_imp) WHERE Code IN ($codes_imp)";

実行すると、クエリは次のようになります。

INSERT INTO users (password, comments) 
VALUES ('password1', 'password2', 'password3', 'comment1', 'comment2', 'comment3') 
WHERE Code IN ('code1', 'code2', 'code3')

テーブル内のすべての列のタイプはVARCHARです。明らかに構文エラーがあります (それが教えてくれます) が、これを適切に構築する方法がわかりません。

4

2 に答える 2

3

句でINSERTクエリを制約しようとしています。WHEREそれは大したことではありません。

したいUPDATE、またはドロップする必要があるWHERE

正確に何を達成しようとしていますか?

于 2012-09-20T17:52:56.343 に答える
2

既存のデータベース行を変更するには、UPDATEand notを使用する必要があります。INSERTループのようなループ構造を使用できforeachます。例えば:

foreach($codes_imp as $key=>$code){
   $query="UPDATE users SET password='$passwords_imp[$key]', comments='$comments_imp[$key]' WHERE Code='$code'"
   [Code to execute the query goes here]
}

注意:UPDATEクエリは一度に 1 つの db 行でしか実行できないため、ループ構造を使用する必要があります

別の方法:

ループを使用する代わりにCASE WHEN ELSE END、Mysql の構文を使用できます。
これを使用する方法については、以下を参照してください。

于 2012-09-20T17:59:30.570 に答える