PHP では、prepare メソッドを使用して PDO パラメータ化されたクエリを実行できます。このメソッドは、「prepare('SELECT login_oid FROM logged in WHERE user_id=...」などの構文を使用して PDOStatement オブジェクトを返します。
この記事の動作環境: Windows 7 システム、PHP7.1、Dell G3 コンピューター
php の実装方法pdo パラメータ化されたクエリ?
PDO パラメータ化されたクエリ prepare() php は SQL インジェクションを防止します
PDO のパラメータ化されたクエリは主に prepare() メソッドを使用し、このメソッドは PDOStatement オブジェクトを返しますこれは SQL ステートメント (変換方法が不明) ですが、現時点では SQL ステートメントはコンパイルされるだけで、実行されません。PDOStatement のメソッドを呼び出した後、次の例のように SQL ステートメントが実行されます:
$sm = $db->prepare('SELECT login_oid FROM logined WHERE user_id=:user_id;'); $sm->bindValue(':user_id', $user_id, PDO::PARAM_INT); $sm -> execute();
execute() が実行される前に、bindValue( ) または bindingParam() メソッドを呼び出して、前に準備した SQL ステートメントで指定したパラメーターを置き換えることができます。SQL ステートメントでパラメーターを指定するには、2 つの方法があります: ': name' と '?'。前者は上記のコードで使用されています。後者のメソッドは次のとおりです:
$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;'); $sm->bindValue(1, $calories, PDO::PARAM_INT); $sm->execute();
bindValue() には 3 つのパラメータがあります。最初のパラメータは、SQL ステートメント内のどのパラメータを置換するかを指定します。 2 番目は置換された値を指定し、3 番目は値を指定します。タイプ、タイプは次のとおりです:
PDO::PARAM_BOOL
Boolean 型
PDO::PARAM_NULL
NULL 型
PDO::PARAM_INT
Integer 型
PDO::PARAM_STR
CHAR、VARCHAR、string などの文字列型
PDO::PARAM_LOB
ファイルなどのリソース クラスのラージ オブジェクト
PDO::PARAM_STMT
わかりません
PDO::PARAM_INPUT_OUTPUT
これは拡張型のようです
実数型が提供されていませんが、これは非常に驚くべきことです。
execute() メソッドについて話しましょう。このメソッドはパラメータ置換も行うことができます。ただし、次のようにすべての値の型を文字列型に変更します。
$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;'); $sm->execute(array($calories));
複数パラメータの置換は次のとおりです。
$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?, id < ?;'); $sm->execute(array($calories, $user_id));
推奨学習:「PHP ビデオ チュートリアル#」 ##"
以上がPHP PDOパラメータ化クエリを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。