プリペアド ステートメントを使用する場合、変数を SQL クエリと適切に連結することが重要です。構文が正しくないと、次のコード フラグメントで発生するようなエラーが発生する可能性があります。
$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{$var}%' '; // Error: Number of variables doesn't match number of parameters $sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% '; // Error: Wrong SQL
これらのエラーを回避するには、次の手順を実行します。
$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
この例では、$likeVar には、次の値が含まれています。ワイルドカード (「%...%」) を使用して検索します。これを s (文字列) パラメータ タイプにバインドすると、データベース クエリで適切に処理されるようになります。
大文字と小文字を区別しない検索が必要な場合は、COLLATE utf8mb4_bin 句をクエリ:
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ? COLLATE utf8mb4_bin");
以上がSQL で変数をプリペアドステートメントと適切に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。