ホームページ  >  記事  >  バックエンド開発  >  [PDO バインディング パラメーター] PHP の PDO 拡張機能を使用してバッチ更新操作を実行する、pdo binding_PHP チュートリアル

[PDO バインディング パラメーター] PHP の PDO 拡張機能を使用してバッチ更新操作を実行する、pdo binding_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:53:52892ブラウズ

[PDO バインディング パラメーター] PHP の PDO 拡張機能を使用して、バッチ更新操作、PDO バインディングを実行します

最近、データベース テーブル内の特定のフィールドをバッチ更新する必要があり、これを実行するときに、PDO バインディングが使用されました。 。

プラン選択

著者は、バッチ更新に関する次の解決策を知っています:

1. 項目ごとに更新します

これは最も単純な解決策ですが、最も効率が悪いのは間違いありません。

2.場合

次のような文

リーリー

PDO バインディングパラメータ

SQL インジェクションを防ぐために、PDO 拡張バインディング パラメーターが使用されます。上記の数値は通常変数であるため、パラメーターのバインドが必要です。最初は、IDで構成された文字列をIN時に変数としてバインドすることを考えました。最初の実装のコードは次のとおりです。 リーリー

後になって、これは機能しないことがわかりました。奇妙なことに、この方法では最初のレコードのみを更新できるということです。情報を調べたところ、このバインド方法は実行可能ではなく、IN ステートメントのパラメータを 1 つずつバインドする必要があることがわかりました。ドキュメントのbindParam関数の説明を見てください:

説明には、PHP 変数がプレースホルダーにバインドされると記載されていることがわかります。そのため、:id が 1 と 2 の文字列がバインドされている場合、MySQL がステートメントを解析するとき、1,2 は単一の変数として解析されます。 、文字列ではありません。これは、SQL インジェクションを防ぐための PDO の原則でもあり、プレースホルダーのバインドを通じて、バインドされた値のみが値として扱われ、ステートメントなどの他のものは値として扱われません。このようにして、MySQL は渡された値のみを変数として扱います。価値。

修正された文章:

リーリー

まとめ

これは私が最近遭遇した小さな問題ですが、実際には、MySQL の IN ステートメントでパラメータをバインドするときに、パラメータを 1 つずつバインドする必要があることを説明するためのものです。

参考リンク:

mysqlステートメント: 複数のレコードの異なる値をバッチ更新します

配列を IN() 条件にバインドできますか?

限られた文体と限られた知識によるオリジナル記事 記事内に何か間違っている点がございましたら、お知らせください。

この記事が役に立った場合は、「おすすめ」をクリックしてください。記事を書くのは簡単ではありません。

http://www.bkjia.com/PHPjc/1122769.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/1122769.html技術記事 [PDO バインディング パラメーター] PHP の PDO 拡張機能を使用してバッチ更新操作を実行します。最近、PDO バインディングには、データベース テーブル内の特定のフィールドをバッチ更新する要件があります。この要件を実行する場合は、...
を使用します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。