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

CodeIgniterでプリペアドステートメントを使用するにはどうすればよいですか

    CodeIgniterはプリペアドステートメントをサポートしていません。 CIのデータベースクラスのソースコードを見ると、質問マークを渡された配列のデータに置き換えるだけでバインディングが解決されることがわかります。

    名前のないプレースホルダーを使用したクエリバインディングのみをサポートします。 http://ellislab.com/codeigniter/user-guide/database/を参照してくださいquerys.html

    クエリバインディング

    バインディングを使用すると、システムにクエリをまとめてもらうことで、クエリ構文を簡素化できます。次の例を考えてみましょう:

    $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
    $this->db->query($sql, array(3, 'live', 'Rick'));
    

    クエリの質問マークは、クエリ関数の2番目のパラメータの配列の値に自動的に置き換えられます。

    および http://ellislab.com/forums/viewthread/105112/#528915 >

    CIはプリペアドステートメントをサポートしていませんが、クエリバインディングをサポートしています。プリペアドステートメントでは、ある種のprepare()関数を呼び出してから、ある種のexecute()関数を呼び出す必要があります。クエリバインディングを使用すると、1つの関数を呼び出すだけで、基本的に同じことを実行できます。このため、プリペアドステートメントよりもクエリバインディングの方が好きです。

    ちなみに、?を変更します :fooへ 名前のないバインディングから名前の付いたバインディングに変更しているだけです(CIは明らかにどちらもサポートしていません)。どちらかを使用している、またはステートメントを準備しているという意味ではありません。



    1. MySQLで月末を取得する方法

    2. MySQLで末尾の空白を削除する方法

    3. OUTパラメータを持つ関数から戻る

    4. SQLテーブルから重複を削除する複数の方法