PDO でパラメータ化されたクエリ sql_PHP を使用するチュートリアル
メソッドbindParam()とbindValue()は非常に似ています。
唯一の違いは、前者はパラメータのバインドに PHP 変数を使用するのに対し、後者は値を使用することです。
したがって、bindParam を使用する場合、2 番目のパラメーターは変数値ではなく変数名のみを使用できますが、bindValue は特定の値のみを使用できます。
$stm = $pdo->prepare("select * from users where user = :user"); //正しい
$stm->bindParam(":user",$user);
//不正解
//$stm->bindParam(":user","jack");
//正しい
$ stm->bindValue(":user",$user);
//Correct
$stm->bindValue(":user","jack");
さらに、ストアド プロシージャでは、bindParam を使用できます。以下のように入力/出力変数にバインドします:
$stm->execute();
ストアドプロシージャの実行後の結果を変数に直接反映できます。
メモリ内の大きなデータ ブロック パラメーターの場合、パフォーマンス上の理由から、前者を最初に使用する必要があります。
------------------------------------------------- -
http://zh.wikipedia.org/wiki/%E5%8F%83%E6%95%B8%E5%8C%96%E6%9F%A5%E8%A9%A2
パラメータ化されたクエリ
パラメータ パラメータ化クエリ(パラメータ化されたクエリまたはパラメータ化されたステートメント)とは、データベースに接続してデータにアクセスするための設計時に、値またはデータを入力する必要がある場所にパラメータ(Parameter)を使用して値を与えることを指します。 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 はnamedをサポートしていませんパラメータでは、匿名パラメータ「?」のみがサポートされます。
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
[編集]クライアントプログラムの書き方
クライアントコードに記述して使用する パラメータコード例:
[編集] ADO.NET
ADO.NET は ASP.NET 内で使用されます。
SqlCommand sqlcmd = new SqlCommand("INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4)", sqlconn);
sqlcmd.Parameters.AddWithValue("@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" = :is_valid');
// バインドパラメータ
$stmt->bindValue(': id ', $id);
$stmt->bindValue(':is_valid', true);
// クエリ
$stmt->execute(); // データを取得
foreach($stmt as $row) ) {
var_dump($row);
}
[code]
MySQL の特定のドライバーの場合は、次のように使用することもできます:
$db = new mysqli("localhost", "user", "pass", "データベース");
$stmt = $mysqli -> prepare("SELECT priv FROM testUsers WHERE ユーザー名=? AND パスワード=?"); ;
$stmt - >execute();
次のメソッドは (mysql_real_escape_string 関数のエスケープのおかげで) SQL インジェクションを効果的に防ぐことができますが、これは真のパラメータ化されたクエリではないことに注意してください。その本質は依然として文字列を連結する SQL ステートメントです。
[コード]
$query = sprintf("SELECT * FROM Users where UserName='%s' and Password='%s'",
mysql_real_escape_string($Username),
mysql_real_escape_string($Password));クエリ);
[編集] JDBC
JDBC は Java で使用されます。
"SELECT * FROM `users` WHERE USERNAME = ? AND PASSWORD = ?");
prep.setString(1, ユーザー名); ;
prep.executeQuery();
[編集] コールドフュージョン
コメントから
WHERE COMMENT_ID =
http://www.bkjia.com/PHPjc/324178.html
www.bkjia.com

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

Xuexin.com で私の学歴を確認するにはどうすればよいですか? Xuexin.com で学歴を確認できますが、多くのユーザーは Xuexin.com で学歴を確認する方法を知りません。次に、エディターが Xuexin.com で学歴を確認する方法に関するグラフィック チュートリアルを提供します。興味のあるユーザーはぜひ見に来てください! Xuexin.com の使用方法チュートリアル: Xuexin.com で学歴を確認する方法 1. Xuexin.com の入り口: https://www.chsi.com.cn/ 2. Web サイトのクエリ: ステップ 1: Xuexin.com のアドレスをクリックします。上記をクリックしてホームページに入ります [教育クエリ]をクリックします; ステップ2: 最新のWebページで下図の矢印に示すように[クエリ]をクリックします; ステップ3: 新しいページで[学術単位ファイルにログイン]をクリックします; ステップ4: ログインページで情報を入力し、[ログイン]をクリックします。

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

12306 チケット予約アプリの最新バージョンをダウンロードします。誰もが非常に満足している旅行チケット購入ソフトウェアです。行きたい場所に行くのに非常に便利です。ソフトウェアには多くのチケット ソースが提供されています。本物のチケットを渡すだけで済みます。 - 氏名認証によるオンラインチケット購入 全ユーザー 旅行券や航空券を簡単に購入でき、さまざまな割引が受けられます。また、チケットを入手するための事前予約も開始できます。ホテルや特別な車の送迎も予約できます。これを使用すると、ワンクリックで行きたい場所に行き、チケットを購入できます。旅行がより簡単で便利になり、すべての人に旅行体験を提供します編集者はオンラインで詳細を説明するようになり、12306 人のユーザーに過去のチケット購入記録を表示する方法が提供されます。 1. Railway 12306 を開き、右下隅の [My] をクリックして、[My Order] をクリックします。 2. 注文ページで [Paid] をクリックします。 3. 有料ページにて

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

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