MYSQL ИЛИ не работает

У меня есть код, в котором 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