У меня есть код, в котором OR
не работает
try { $keyword = trim($_GET["keyword"]); if ($keyword <> "" ) { $sql = "SELECT * FROM tbl_contacts WHERE 1 AND " . " (first_name OR last_name LIKE :keyword) ORDER BY first_name "; $stmt = $DB->prepare($sql); $stmt->bindValue(":keyword", $keyword."%");
Он last_name
поиск только с last_name
а не с first_name
.
Мне нужно, чтобы он искал как last_name, так и first_name .
Правильный код:
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND " . " (first_name LIKE :keyword1 OR last_name LIKE :keyword2) ORDER BY first_name "; $stmt = $DB->prepare($sql); $stmt->bindValue(":keyword1", $keyword."%"); $stmt->bindValue(":keyword2", $keyword."%");
Обратите внимание, что у вас не может быть более одного заполнителя с тем же именем. Вот почему я использую keyword1
и keyword2
и привязываю к ним одинаковое значение.
Попробуй это
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND " . " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name ";
На этот раз вы приложили дополнительные усилия и попробовали больше, да, это более понятно, чем результат поиска MYSQL .
try { $keyword = trim($_GET["keyword"]); if ($keyword <> "" ) { $sql = "SELECT * FROM tbl_contacts WHERE 1 AND " . " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name "; $stmt = $DB->prepare($sql); $stmt->bindValue(":keyword", $keyword."%");
Надеюсь, это поможет вам.
И да, попробуйте отредактировать тот же вопрос, не задавайте тот же вопрос по-другому.
Я тоже ответил на этот вопрос https://stackoverflow.com/a/44859438/7678788