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

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

藏色散人
リリース: 2023-03-12 19:16:02
オリジナル
2130 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート