Следующие приводит к ошибке, потому что я не могу связать один вар на несколько заполнителей:PDO лучшая практика для запроса нескольких полей с одной переменной
$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();
I думаю, что это не очень эффективно. Мне нужно скопировать мой var 2 раза, чтобы иметь возможность связывать его 2 раза. Если я хочу запросить 6 полей, мне нужно скопировать их 6 раз. Я чувствую, что должен быть лучший способ.
Есть ли лучшее обходное решение для обработки этого случая?
Вы также можете установить его, указав его в массив. –
Вам не нужно '$ search1' +' $ search2', просто используйте '$ search' дважды. Возможно, что вместо имени ': .. 1',': .. 2' может быть несколько наименований вместо того, чтобы заманить, что эти заполнители имеют одинаковое значение. – djot