ホームページ php教程 php手册 PDO でパラメータ化されたクエリ SQL を使用する

PDO でパラメータ化されたクエリ SQL を使用する

Jun 13, 2016 pm 12:06 PM
pdo sql 使用 地区 パラメータ そして のみ 方法 お問い合わせ 類似性

メソッドbindParam()とbindValue()は非常に似ています。
唯一の違いは、前者はパラメータのバインドに PHP 変数を使用するのに対し、後者は値を使用することです。
したがって、bindParam を使用する場合、2 番目のパラメーターは変数値ではなく変数名のみを使用できますが、bindValue は特定の値のみを使用できます。

コードをコピー コードは次のとおりです:


$stm = $pdo->prepare("select * from usersここで user = :user");
$user = "jack";
//正しい
$stm->bindParam(":user",$user);
//間違った
/ /$stm->bindParam(":user","jack");
//修正
$stm->bindValue(":user",$user); /Correct
$stm->bindValue(":user","jack");

さらに、ストアド プロシージャでは、bindParam を入出力変数にバインドできます。以下に示すように:

コードをコピー コードは次のとおりです:

$stm = $pdo->prepare(" call func(:param1)");
$param1 = "abcd";
$stm->bindParam(":param1",$param1); //修正
$stm->実行();


ストアドプロシージャ実行後の結果を変数に直接反映できます。
メモリ内の大きなデータ ブロック パラメータの場合、パフォーマンス上の理由から、前者を最初に使用する必要があります。
----------------------------------------------- --- ---
http://zh.wikipedia.org/wiki/パラメータ化されたクエリ
パラメータ化されたクエリ
パラメータ化されたクエリ (パラメータ化されたクエリまたはパラメータ化されたステートメント) は、設計をデータベースに接続し、データを入力する必要がある場合、パラメーター (パラメーター) を使用して値を指定します。この方法は、現在、SQL インジェクション攻撃 (SQL インジェクション) を防ぐための最も効果的な防御方法とみなされています。一部の開発者は、パラメータ化されたクエリを使用すると、プログラムの保守がより困難になる、または一部の機能を実装するのが非常に不便になると考えるかもしれません [ソース要求]。しかし、パラメータ化されたクエリを使用することによって発生する追加の開発コストは、通常、パラメータ化されたクエリよりもはるかに少なくなります。 SQLインジェクション攻撃の脆弱性発見による攻撃による多大な損失。
セキュリティ要素に加えて、パラメータ化されたクエリには、文字列を連結する SQL ステートメントと比較してパフォーマンス上の利点があることがよくあります。パラメーター化されたクエリでは、パラメーターを通じてさまざまなデータがデータベースに到達できるため、同じ SQL ステートメントを共有できるからです。ほとんどのデータベースは、繰り返しの解析によるオーバーヘッドを節約するために、SQL ステートメントの解釈によって生成されたバイトコードをキャッシュします。文字列を連結するSQL文を採用した場合、操作データはパラメタではなくSQL文の一部であるため、大量のSQL文を繰り返し解釈することにより不要なオーバヘッドが発生します。
目次
* 1 原則
* 2 SQL 命令の記述方法
o 2.1 Microsoft SQL Server
o 2.2 Microsoft Access
o 2.3 MySQL
o 2.4 PostgreSQL/ SQLite
* 3 クライアント プログラムの作成方法
o 3.1 ADO.NET
o 3.2 PDO
o 3.3 JDBC
o 3.4 Cold Fusion
[編集] 原則
パラメータ化されたクエリの使用この場合、データベース サーバーはパラメータの内容を SQL コマンドの一部として処理せず、データベースが SQL コマンドのコンパイルを完了した後にパラメータを適用します。そのため、パラメータに破壊的なコマンドが含まれている場合でも、データベースによっては実行されません。
[編集] SQL 命令の書き方
SQL 命令を記述するときは、パラメータを使用して、入力する必要がある値を表します。例:
[編集] Microsoft SQL Server
Microsoft SQL Server のパラメータ形式は、パラメータ名に「@」文字を追加することによって形成されます。SQL Server は匿名パラメータ「?」もサポートします。
SELECT * FROM myTable WHERE myID = @myID
INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4)
[編集] Microsoft Access
Microsoft Access は名前付きパラメータをサポートしておらず、匿名パラメータ "?" のみをサポートしています。
UPDATE myTable SET c1 = ?, c2 = ?, c3 = ? WHERE c4 = ?
[編集] MySQL
MySQL のパラメータ形式は、「?」文字とパラメータ名で構成されます。
UPDATE myTable SET c1 = ?c1, c2 = ?c2, c3 = ?c3 WHERE c4 = ?c4
[編集] PostgreSQL/SQLite
PostgreSQL および SQLite のパラメータ形式は「:」で始まります。パラメータ名が形成されます。もちろん、Access のような匿名パラメータもサポートされています。
UPDATE "myTable" SET "c1" = :c1, "c2" = :c2, "c3" = :c3 WHERE "c4" = :c4
[編集] クライアントプログラムの書き込みメソッド
in Writeクライアント コードでパラメーターを使用するコード。例:
[編集] ADO.NET
ADO.NET は ASP.NET 内で使用されます。
SqlCommand sqlcmd = new SqlCommand("INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4)", sqlconn); "@c1", 1); // パラメータ @c1 の値を設定します。
sqlcmd.Parameters.AddWithValue("@c2", 2); // パラメーター @c2 の値を設定します。
sqlcmd.Parameters.AddWithValue("@c3", 3); // パラメーター @c3 の値を設定します。
sqlcmd.Parameters.AddWithValue("@c4", 4); // パラメーター @c4 の値を設定します。
sqlconn.Open();
sqlcmd.ExecuteNonQuery();
[編集] PDO
PDO は PHP 内で使用されます。 PDO ドライバーを使用する場合、パラメーター クエリを使用する方法は一般的に次のとおりです:


コードをコピー コードは次のとおりです:


// データ抽象化層オブジェクトをインスタンス化します
$db = new PDO('pgsql:host=127.0.0.1;port=5432;dbname=testdb');
// SQL ステートメントの場合prepare を実行して PDOStatement オブジェクトを取得します
$stmt = $db->prepare('SELECT * FROM "myTable" WHERE "id" = :id AND "is_valid" =
// Bindingパラメータ
$stmt->bindValue(':id', $id);
$stmt->bindValue(':is_valid', true);
// クエリ
$stmt- >execute();
//Get data
foreach($stmt as $row) {
var_dump($row);
[code]
MySQL 固有ドライバーは次のように使用することもできます。
$db = new mysqli("localhost", "user", "pass", "database");
$stmt = $mysqli -> FROM testUsers WHERE ユーザー名=? AND パスワード=?");
$stmt -> binding_param("ss", $user, $pass);
$stmt ->execute();
価値次の方法は (mysql_real_escape_string 関数のエスケープのおかげで) SQL インジェクションを効果的に防ぐことができますが、これは真のパラメータ化されたクエリではないことに注意してください。その本質は依然として文字列を連結する SQL ステートメントです。
[code]
$query = sprintf("SELECT * FROM Users where UserName='%s' and Password='%s'",
mysql_real_escape_string($Username),
mysql_real_escape_string($パスワード));
mysql_query($query);

[編集] JDBC
JDBC は Java で使用されます。
java.sql.PreparedStatement prep = connection.prepareStatement(
"SELECT * FROM `users` WHERE USERNAME = ? AND PASSWORD = ?");
prep.setString(1, username); prep.setString(2, パスワード);
prep.executeQuery();
[編集] Cold Fusion
🎜>コメントから
WHERE COMMENT_ID =

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

トマト無料小説アプリで小説を書く方法. トマトノベルで小説を書く方法に関するチュートリアルを共有します。 トマト無料小説アプリで小説を書く方法. トマトノベルで小説を書く方法に関するチュートリアルを共有します。 Mar 28, 2024 pm 12:50 PM

トマト ノベルは非常に人気のある小説閲覧ソフトウェアです。トマト ノベルでは、新しい小説や漫画を読むことができます。どの小説も漫画もとても面白いです。小説を書きたい友達もたくさんいます。お小遣いを稼いで、小説の内容を編集することもできます。 「テキストに文章を書きたいです。それで、小説はどうやって書くのですか?友達は知らないので、一緒にこのサイトに行きましょう。小説の書き方の入門を少し見てみましょう。」 Tomato Novels を使用して小説を書く方法に関するチュートリアルを共有します。 1. まず、携帯電話で Tomato Free Novels アプリを開き、パーソナル センター - ライター センターをクリックします。 2. Tomato Writer Assistant ページに移動し、次の場所で [新しい本の作成] をクリックします。小説の終わり

Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Apr 17, 2024 pm 02:57 PM

HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) May 01, 2024 pm 12:01 PM

残念ながら、WeChat は広く使用されているソーシャル ソフトウェアであり、何らかの理由で特定の連絡先を誤って削除してしまうことがよくあります。ユーザーがこの問題を解決できるように、この記事では、削除された連絡先を簡単な方法で取得する方法を紹介します。 1. WeChat の連絡先削除メカニズムを理解します。これにより、削除された連絡先を取得できるようになります。WeChat の連絡先削除メカニズムでは、連絡先がアドレス帳から削除されますが、完全には削除されません。 2. WeChat の組み込みの「連絡先帳復元」機能を使用します。WeChat には、この機能を通じて以前に削除した連絡先をすばやく復元できる「連絡先帳復元」機能が用意されています。 3. WeChat 設定ページに入り、右下隅をクリックし、WeChat アプリケーション「Me」を開き、右上隅にある設定アイコンをクリックして設定ページに入ります。

NetEase メールボックス マスターの使用方法 NetEase メールボックス マスターの使用方法 Mar 27, 2024 pm 05:32 PM

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「Ne​​tEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

Baidu Netdisk アプリの使用方法 Baidu Netdisk アプリの使用方法 Mar 27, 2024 pm 06:46 PM

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) 携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) May 07, 2024 pm 03:34 PM

携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) May 04, 2024 pm 06:01 PM

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

See all articles