1 つの変数を複数のプレースホルダーにバインドできないため、次の結果はエラーになります。
$search = "%somename%";
$stmt = $pdo->prepare("SELECT * FROM persons WHERE firstname LIKE :search OR lastname LIKE :search");
$stmt->bindValue(":search", $search, PDO::PARAM_STR);
$stmt->excecute();
私の回避策は次のとおりです。
$search = "%somename%";
$search1 = $search;
$search2 = $search;
$stmt = $pdo->prepare("SELECT * FROM persons WHERE firstname LIKE :search1 OR lastname LIKE :search2");
$stmt->bindValue(":search1", $search1, PDO::PARAM_STR);
$stmt->bindValue(":search2", $search2, PDO::PARAM_STR);
$stmt->excecute();
このように効率が悪いと思います。var を 2 回バインドできるようにするには、var を 2 回コピーする必要があります。6 つのフィールドを照会する場合は、6 回コピーする必要があります。私の気持ちは、もっと良い方法があるに違いないということです。
このケースを処理するためのより良い回避策はありますか?