ホームページ >データベース >mysql チュートリアル >PDO を使用して SQL クエリでバインドされたパラメーターを再利用するにはどうすればよいですか?
PDO SQL クエリでのバインドされたパラメーターの再利用: 効果的な戦略
検索機能を備えた SQL クエリを構築するには、多くの場合、同じ検索語を繰り返し使用する必要があります。 ただし、PDO ドキュメントには、準備されたステートメント内で同じ名前のパラメーターを複数回使用することは許可されていないと明示的に記載されています。 効率的な回避策を検討してみましょう。
実用的な代替案
複数のパラメータ名 (例:term1、:term2) を使用する代わりに、次のアプローチを検討してください。
<code class="language-sql">SET @term = :term; SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term;</code>
<code class="language-php">$query = "SELECT ... FROM table WHERE name LIKE :term OR number LIKE :term"; $term = "hello world"; $termX = 0; $query = preg_replace_callback("/\:term/", function ($matches) use (&$termX) { $termX++; return $matches[0] . ($termX - 1); }, $query); $stmt = $pdo->prepare($query); for ($i = 0; $i < 2; $i++) { $stmt->bindValue(":term$i", "%$term%", PDO::PARAM_STR); } $stmt->execute();</code>
PDOStatement::execute()
.最適解の選択
繰り返しバインドされたパラメータを処理するための最適なアプローチは、特定のニーズとクエリの複雑さによって異なります。 MySQL のユーザー定義変数はシンプルさと読みやすさを提供しますが、パラメーター置換はより複雑なクエリに対してより高い柔軟性を提供します。
以上がPDO を使用して SQL クエリでバインドされたパラメーターを再利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。