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

MYSQLクエリの前にPHP変数を使用する

    mysql_ *関数を使用しないことに関する一般的な推奨事項に加えて、
    配列要素に空白がないことを確認する必要があります。

    各ステップでクエリを削除してデバッグするためのサンプルコードを次に示します。

    <?php
    
    $elements = array('  element A', "\t Element B \r\n");
    
    var_dump($elements);
    
    /*
    use var_dump to check your array elements for whitespace and such
    array(2) {
      [0]=>
      string(11) "  element A"
      [1]=>
      string(14) "   Element B
    "
    }
    */
    
    // create your IN clause string and verify it
    $joinedString = "('" . join("','",array_map('trim',$elements)) . "')";
    
    var_dump($joinedString);
    /*
    use var_dump not echo
    string(25) "('element A','Element B')"
    
    */
    
    // your query string finally becomes
    $query = "SELECT * FROM smoelenboek 
    WHERE sectie1 IN $joinedString 
    OR sectie2 IN $joinedString 
    OR sectie3 IN $joinedString 
    OR sectie4 IN $joinedString 
    OR sectie5 IN $joinedString 
    AND actief='ja' ORDER BY achternaam ASC";
    
    // and check it with var_dump and also run it in PhpMyAdmin
    var_dump($query);
    /*
    string(280) "SELECT * FROM smoelenboek
    WHERE sectie1 IN ('element A','Element B')
    OR sectie2 IN ('element A','Element B')
    OR sectie3 IN ('element A','Element B')
    OR sectie4 IN ('element A','Element B')
    OR sectie5 IN ('element A','Element B')
    AND actief='ja' ORDER BY achternaam ASC"
    */
    


    1. 同じパーティションに複数のウィンドウ関数を適用する

    2. 誕生日を保存するのに最適なフィールドは何ですか?

    3. データベース内のテーブルごとに1つのSQLiteOpenHelperが必要ですか?

    4. mysqlで友達リストを設定する