列の値が配列の要素のいずれかと一致したときにレコードを返すクエリを作成しています。私はそれが動作する静的配列(サンプルを参照)を使用する場合:返される行where phpとsqlの変数配列の中の列
sql = "SELECT *
FROM tasks
WHERE
tasks.type IN ('homework', 'chores', 'laundry')";
を私は比較から使用したいユーザー入力から移入されたタスクの配列を持っている場合はどう?このように:
$task_list = //declaration and populate the array. I know it works, so I'm skipping it
sql = "SELECT *
FROM tasks
WHERE
tasks.type IN "+$task_list+" ";
これは私にエラーが発生します。 私は実際にSQLとPHPを混在させていないので、答えを探しました。おそらく正しい構文を正しく検索できませんでした。知りたいという方のため
、var_dump($task_list);
は、次のように出力されます
array(3) { [0]=> string(8) "homework" [1]=> string(6) "chores" [2]=> string(7) "laundry" }
それがうまくいくなら、それはなぜSQLで壊れていますか? '$ task_list'を生成するために何をしているのかを示す必要があります。あなたがそこに詰め込んだものは、あなたのクエリに詰め込まれても、VALID sqlになるはずです。構文エラーが発生するため、有効なsqlではなく、ビルドコードが正しく動作していません。 –
また、 '+'はPHPでは数学的に追加されたものであり、文字列連結ではありません。 –
コードはかなり長いです。私は配列の内容をチェックするためにvardumpを行った。私は答えに追加することができます。何が間違っているのは、この配列をクエリに含める方法です。 –