sql >> データベース >  >> RDS >> Mysql

PHP PDO MySQL IN(?、?、?

    これはあなたがそれを試す方法では不可能です。渡すパラメーターごとに個別のプレースホルダーが必要です。それ以外の場合は、パラメーターの目的(コードをデータから分離すること)に反します。

    $ids = array(2, 4, 6, 8);
    
    // prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
    $plist = ':id_'.implode(',:id_', array_keys($ids));
    $sql   = "SELECT * FROM someTable WHERE someId IN ($plist)";
    // prepare & execute the actual statement
    $parms = array_combine(explode(",", $plist), $ids);
    $stmt  = $PDO->prepare($sql);
    $rows  = $stmt->execute($parms);
    

    バインド中に値の配列を単一のパラメーターに渡すことが許可されている場合は、SQLステートメントを効果的に変更できます。これはSQLインジェクションの抜け穴になります。結局のところ、すべての配列値が無実の整数になることを保証するものは何もありません。




    1. Eコマースのデータベースモデルパート1:ニュースレター

    2. MYSQLでUserID+INNERJOINの代わりにスーパーバイザーの名前を取得する方法

    3. UTF-8を使用するようにDjango/MySQLサイトを設定する

    4. DjangoアプリをmySQLからPostgreSQLに簡単に変換するにはどうすればよいですか?