ホームページ  >  記事  >  バックエンド開発  >  PHP PDOパラメータ化クエリを実装する方法

PHP PDOパラメータ化クエリを実装する方法

藏色散人
藏色散人オリジナル
2021-09-20 10:16:512103ブラウズ

PHP では、prepare メソッドを使用して PDO パラメータ化されたクエリを実行できます。このメソッドは、「prepare('SELECT login_oid FROM logged in WHERE user_id=...」などの構文を使用して PDOStatement オブジェクトを返します。

PHP PDOパラメータ化クエリを実装する方法

この記事の動作環境: 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(&#39;SELECT * FROM fruit WHERE calories < ?;&#39;);
$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(&#39;SELECT * FROM fruit WHERE calories < ?;&#39;);
$sm->execute(array($calories));

複数パラメータの置換は次のとおりです。

$sm = $db->prepare(&#39;SELECT * FROM fruit WHERE calories < ?, id < ?;&#39;);
$sm->execute(array($calories, $user_id));

推奨学習:「PHP ビデオ チュートリアル#」 ##"

以上がPHP PDOパラメータ化クエリを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。