PHP PDOStatement:bindParam 挿入データエラーの問題分析_PHP チュートリアル
早速、コードを直接見てみましょう:
$dbh = new PDO('mysql:host=localhost;dbname=test) ', "テスト") ;
$query = <<
QUERY;
$statement = $dbh->prepare ($query);
$bind_params = array(':username' => "laruence", ':password' => "weibo");
foreach( $bind_params as $key = > $value ){
$statement->bindParam($key, $value);
}
$statement->execute();
すみません、最後に実行された SQL ステートメントは何ですか?上記のコードに問題はありますか?
OK、ほとんどの学生は、最後に実行される SQL は次のようになると思います:
INSERT INTO `user` (`username`, `password`) VALUES ("laruence", "weibo");
しかし、残念ながら、あなたは間違っています。はい、最後に実行される SQL は次のとおりです:
INSERT INTO `user` (`username`, `password`) VALUES ("weibo", "weibo");
これは大きな落とし穴ですか?
これ今日の質問です バグレポート: #63281
その理由は、bindParam と bindingValue の違いは、bindParam では 2 番目のパラメーターが参照変数 (reference) である必要があることです。
上記のコードの foreach を逆アセンブルしてみましょう。このforeach:
foreach( $bind_params as $key => $value ){
$statement->bindParam($key, $value) ;
}
は以下と同等です:
//最初のループ
$value = $bind_params[":username" ];
$statement ->bindParam(":username", &$value); //このとき、:usernameは$value変数への参照です
//2番目のループ
$value = $bind_params[ ":password"]; //おっと!$value は:password
$statement->bindParam(":password", &$value);
の値に上書きされるため、bindParam を使用する場合は特に注意してください。 foreach と組み合わせて使用する場合、このトラップは何ですか?
1. foreach を使用せず、手動で値を割り当てます
2.bindParam の代わりに、bindValue を使用するか、パラメータ配列全体を実行で直接渡します。
3.foreach と参照を使用します (推奨されません)
コードをコピーします
コードは次のとおりです:
最後に、パラメータを参照する必要があり、遅延がある関数については、foreach を使用するときに注意してくださいと展開します。
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)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
