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

LaravelEloquentで名前付きパラメーターを使用できますか

    まあ、誰かがより良い解決策を持っているなら、それを提出するか、私の一時的な解決策の何が悪いのか教えてください。すべての「?」を置き換えます「:autoparam」を使用し、パラメータをインクリメントして「:autoparam0」、「:autoparam1」、「:autoparam2」などを作成します。

        //Replace ? with a pseudo named parameter
        $newStatement = null;
        $parameter = 0;
        while($newStatement !== $statement)
        {
            if($newStatement !== null)
            {
                $statement = $newStatement;
            }
            $newStatement = preg_replace('/\?/', ':autoparam'.$parameter, $statement, 1);
            $parameter++;
        }
        $statement = $newStatement;
    

    次に、PDOからパラメーターをバインドする要求を受け取ったら、パラメーターが数値であるかどうかを確認します。ほとんどの言語では、私が知る限り、数値インデックスは無効な識別子であるため、少なくとも私のPDOユーザースペースドライバーでは、数値パラメーター名を次のように置き換えることができると安全に想定できます。

        //Replace the first @oci8param to a pseudo named parameter
        if(is_numeric($parameter))
        {
            $parameter = ':autoparam'.$parameter;
        }
    

    今のところは機能します。問題が別のスコアで表示されるかどうかを確認するために、laravelでさらにテストを行う必要がありますが、これまでのところ、問題はないようです...




    1. PythonによるSQLインジェクション攻撃の防止

    2. MySQL Workbench 6.2クエリの一部として.sqlファイルを実行するにはどうすればよいですか?

    3. SELECTを使用するとMySQLBITフィールド値が表示されない

    4. MySQLにSQLServerのSETNOCOUNTに相当するものはありますか?