У меня проблема с моим запросом, который включает в себя оператор "like".
Вот мой код:
function get_number_of_locations_by_zip_tag($zip, $tag)
{
global $db;
$query = "SELECT * FROM location WHERE zip = :zip AND disabled = 0 AND (tags LIKE :tag OR name LIKE :tag) LIMIT :start, :number";
$statement = $db->prepare($query);
$statement->bindValue(':zip', $zip);
$statement->bindValue(':tag', '%'.$tag.'%', PDO::PARAM_STR);
$statement->execute();
$locations = $statement->fetchAll(); //fetch();
$statement->closeCursor();
return $locations;
}
Я ожидаю, что запрос вернет строки, в которых тег соответствует полю 'name' или 'tags', но вместо этого он вернет только те строки, в которых совпадают теги.
Если я переключу запрос на:
$query = "SELECT * FROM location WHERE zip = :zip AND disabled = 0 AND (name LIKE :tag OR tags LIKE :tag) LIMIT :start, :number";
Тогда результат будет противоположным: он будет возвращать только те строки, в которых совпадает поле имени, и игнорирует поле тегов.
Кто-нибудь видит что-то не так с этим запросом? Когда я начал разработку, он работает так, как я ожидал, на моем сервере XAMPP в Windows, но когда я переключил все на свой сервер LAMP, этот запрос перестал работать правильно.