CodeIgniter でのプリペアド ステートメントの使用
プリペアド ステートメントは、従来の文字列連結クエリでは得られないレベルのセキュリティとパフォーマンスを提供します。 CodeIgniter はプリペアド ステートメントを直接サポートしていませんが、同様の効果を実現するクエリ バインディングをサポートしています。
この記事では、CodeIgniter でクエリ バインディングを使用する方法を示します。
<code class="php">$sql = "SELECT * FROM tbl_user WHERE uid = ? and activation_key = ?"; $query = $this->db->query($sql, array($uid, $activation_key)); </code>
このコードは、「:id」と「:key」を使用して元の試みと同じ目的を達成しますが、代わりに名前のないプレースホルダーを使用します。名前のないプレースホルダーは CodeIgniter でサポートされており、データ セキュリティのレベルを維持しながらクエリを簡素化できます。
「?」を使用することに注意することが重要です。または「:foo」は、真の準備済みステートメントの機能を示しません。準備されたステートメントには別個の prepare() 関数とexecute() 関数が必要ですが、CodeIgniter はこれをサポートしていません。
代わりに、CodeIgniter はクエリ バインディングを使用して、プレースホルダーを提供されたデータに置き換えます。これにより、SQL インジェクション攻撃に対する保護など、プリペアド ステートメントにも同様の利点が得られます。
クエリ バインディングの詳細と、CodeIgniter がプリペアド ステートメントを直接サポートしない理由については、上記の回答にリストされているリソースを参照してください。
以上がCodeIgniter は、準備されたステートメントと同様のセキュリティとパフォーマンスの利点をどのように実現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。