は私のコードです:他のプレースホルダがある場合にIN()句でプレースホルダを使用する方法はありますか?ここ
$selected_tags_arr = ["PHP", "CSS", "JAVA"];
$part_of_tag = "MyS";
$in = str_repeat('?,', count($selected_tags_arr) - 1) . '?';
$stmt = $dbh_conn->prepare("SELECT name, usage_guidance, total_used_num
FROM tags
WHERE
(name LIKE CONCAT('%', ?, '%') OR
usage_guidance LIKE CONCAT(?, '%')) AND
name NOT IN ($in)");
$stmt->execute(array($part_of_tag, $part_of_tag, $selected_tags_arr));
$result = $stmt->fetchAll();
それは構文エラーのために動作しません。どうすれば修正できますか?
ご覧のとおり、いくつかのパラメータがあります。($selected_tags_arr
アレイを除く)私はそれらを渡す必要があります。それは問題が発生したときです。
注:場合によっては$selected_tags_arr
アレイが空の配列になることがあります。
構文エラー*を投稿する必要があります。コードには他にも問題があります。 'execute'は行列ではなくフラットな配列を求めます。 –
配列内に配列を送信しています。 '$ selected_tags_arr'を最初に他の変数の配列にマージしてみてください。 – aynber
'IN(list)'は、gasp、ColdFusion以外のすべての言語でパラメータ化することはできません。 –