3
$artist_user_ids = implode(',',$artist_user_ids);
$referrer = "referrer IN (?)";
$query = "SELECT id FROM users WHERE $referrer";
$con = db_connect();
$stmt = db_prepare($con, $query);
bind_param('s', $artist_user_ids);
これは動作しません。しかし、1行目を次のように変更した場合、PHP mysqliバインディングのIN句の問題
$artist_user_ids = "'" . implode(',',$artist_user_ids) . "'";
これは魅力的です。何がありますか?
が重複する可能性:// stackoverflow.com/questions/3753295/can-i-bind-multiple-values-as-a-single-parameter-using-mysqli-and-php) –
@Michaelまあまあです。私の質問は:**なぜ**ですか? 'implode()'は文字列を返します。なぜ文字列を引用する必要がありますか? –
IN句には複数のパラメータがあるためです。それらをバインドするには、複数のパラメータとしてバインドする必要があります。値の文字列を複数のパラメータに評価することはできません。そうすることで、パラメータ化されたクエリが提供するセキュリティの利点が損なわれます。 –