ホームページ >PHPフレームワーク >ThinkPHP >thinkphpに前処理はありますか?
thinkphp には前処理があります。 「ThinkPHP3.1」バージョンでは、条件文字列の前処理のサポートが追加され、ORMのセキュリティがより安全になります。方法: 1. where メソッドを使用して文字列条件を前処理します; 2. query メソッドと実行メソッドを使用してネイティブ SQL クエリ メソッドを前処理します。
この記事の動作環境: Windows 10 システム、ThinkPHP バージョン 5、Dell G3 コンピューター。
thinkphp には前処理がありますか
以前の ThinkPHP3.0 バージョンには配列メソッドがありますクエリ条件はセキュリティ フィルタリングされます (これは、3.0 ではフィールド タイプ検出の使用が強制されるため、配列クエリ条件はフィールドのセット タイプに強制的に変換されるためです) が、バージョン 3.0 は文字列のセキュリティ フィルタリングをサポートしていません。条件。 ThinkPHP 3.1 バージョンでは、条件文字列の前処理のサポートが追加され、ORM のセキュリティがより保証されます。
1. where メソッドを使用します
Model クラスの where メソッドは、文字列条件の前処理をサポートします (使用方法:
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();
)、または直接使用します。 :
$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
$id 変数がユーザーの送信または URL アドレスから取得される場合、入力タイプが非数値タイプの場合、クエリの前に強制的に数値フォーマットにフォーマットされます。
文字列前処理形式タイプでは、数値、文字列などの指定がサポートされています。詳細については、vsprintf メソッドのパラメータの説明を参照してください。
2. クエリとメソッドの実行
where 条件に加えて、前処理メカニズムはネイティブ SQL クエリ メソッドでもサポートされています (例:
$Model->query("SELECT * FROM think_user WHERE id=%d and username='%s' and xx='%f'",array($id,$username,$xx));)。
モデルの実行メソッドは、クエリ メソッドのような前処理メカニズムもサポートしています。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がthinkphpに前処理はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。