Предложение having
не означает то же самое, что и предложение where
: при выполнении простого запроса вы должны использовать where
- это то, что вы сделали во втором запросе, и это работает.
having
используется, когда условие должно быть применено к результату предложения group by
.
Это означает, что здесь ваш запрос должен быть построен следующим образом:
$query = "SELECT zips.*
FROM zips
where zips.city LIKE '%$city%'
AND zips.stateabbr LIKE '%$state%'
LIMIT 1";
При этом, если у вас все еще есть ошибка в отношении несуществующего или не найденного столбца (по крайней мере для city
и / или stateabbr
) , это произойдет потому, что этот столбец существуют в вашей таблице.
В этом случае мы мало что можем сделать: вам придется проверить структуру вашей таблицы, чтобы определить, какие столбцы она содержит.
Вы можете проверить эту структуру с помощью веб-инструмента, такого как phpMyAdmin, или с помощью инструкции SQL, такой как:
desc zips;
Для справки цитируем страницу руководства MySQL для select
:
Стандарт SQL требует, чтобы
должны ссылаться только на столбцы в
GROUP BY
предложение или столбцы, используемые в
агрегатные функции.
...
Не используйте HAVING
для предметов, которые
должно быть в предложении WHERE
.
Например, не пишите
следующее:
SELECT col_name FROM tbl_name HAVING col_name > 0;
Напишите это вместо:
SELECT col_name FROM tbl_name WHERE col_name > 0;
...
Предложение HAVING
может относиться к
агрегатные функции, которые WHERE
пункт не может