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

準備されたPDOステートメントを使用してORDERBYパラメーターを設定するにはどうすればよいですか?

    はい、SQLに直接挿入するのに行き詰まっています。もちろん、いくつかの予防策があります。 すべての演算子/識別子はハードコーディングする必要があります スクリプトでは、次のようになります:

    $orders=array("name","price","qty");
    $key=array_search($_GET['sort'],$orders);
    $order=$orders[$key];
    $query="SELECT * from table WHERE is_live = :is_live ORDER BY $order";
    

    方向も同じです。

    ホワイトリストヘルパー関数 を作成しました このような場合に使用すると、作成する必要のあるコードの量が大幅に削減されます。

    $order = white_list($order, ["name","price","qty"], "Invalid field name");
    $direction = white_list($direction, ["ASC","DESC"], "Invalid ORDER BY direction");
    
    $sql = "SELECT field from table WHERE column = ? ORDER BY $order $direction";
    $stmt = $db->prepare($sql);
    $stmt->execute([$is_live]);
    

    ここでの考え方は、値を確認し、正しくない場合にエラーを発生させることです。



    1. Pgpool for PostgreSQLのガイド:パート1

    2. 読み取り専用のMySQLユーザーを作成するにはどうすればよいですか?

    3. SQL Serverでマテリアライズドビューを作成するにはどうすればよいですか?

    4. MySQLの使用方法に関する包括的なガイド