#php #mysql #string
#php #mysql #строка
Вопрос:
Есть ли какая-либо причина, по которой это не должно работать?
$events_query = "SELECT eventID, event_name, event_type, event_address, event_duration, event_date, event_time, event_description, num_attending
FROM events WHERE event_city = '$city' " .$type_query .$date_query .$time_query;
$events_list = mysql_query($events_query);
/* Where $type_query and $date_query are things like:
$type_query = "AND event_type = '$type' ";
*/
В основном приведенный выше код не дает мне ожидаемых результатов, поэтому мне интересно, есть ли проблема с тем, как я делаю это в PHP. Если нет, то это означает, что у меня логическая проблема, которую я бы предпочел, потому что я действительно не знаю, как еще выполнять эти запросы переменного типа, которые я хочу выполнить. В основном мои запросы будут варьироваться в зависимости от введенных пользователем данных.
Спасибо.
Комментарии:
1. В этом методе построения запроса нет ничего изначально неправильного. Вам пришлось бы объяснить, чем результаты отличаются от ваших ожиданий, и я бы предложил повторить / записать окончательный результат
$events_query
и сравнить это с вашими потребностями..2. Ок, все в порядке, я просто хотел подтвердить, что этот синтаксис будет работать. Теперь я могу сделать вывод, что проблема где-то в моей ошибочной логике =)
3. вы пробовали удалять «.» из конечных частей запроса?
4. Если приведенный выше код не дает вам ожидаемых результатов, вы должны сообщить нам ожидаемый результат и фактический результат. Любой код без спецификации не содержит ошибок.
Ответ №1:
Попробуйте ввести
echo $events_query;
инструкция в вашем коде, чтобы увидеть, что такое сгенерированный SQL. Так намного проще увидеть любые ошибки. Хотя, вообще говоря, да, это совершенно законно, и генерация SQL подобным образом довольно распространена.
Ответ №2:
В этом методе построения запроса нет ничего изначально неправильного. Вам пришлось бы объяснить, чем результаты отличаются от ваших ожиданий, и я бы предложил повторить / протоколировать окончательный запрос $events_query и сравнить это с вашими потребностями..
Ответ №3:
Конкатенация строк — это законный способ построения SQL-запроса, и до тех пор, пока вы соблюдаете требования синтаксиса PHP, вы можете генерировать допустимый SQL таким образом.
Распечатайте сгенерированную строку (в файл журнала или на веб-страницу) и проверьте, соответствует ли она тому, что, как вы думали, вы генерируете. В нем могут быть случайные кавычки или точка с запятой, которые изменят или преждевременно завершат запрос.
Вставьте эту строку в консоль MySQL и посмотрите, выдает ли она какие-либо дополнительные ошибки.
Применяются обычные предупреждения о принятии пользовательского ввода непосредственно в SQL-запрос.
Ответ №4:
$events_query = "SELECT eventID, event_name, event_type, event_address, event_duration, event_date, event_time, event_description, num_attending FROM events WHERE event_city ='$city' $type_query $date_query $time_query ";
повторите выполнение копии этого запроса в phpmyadmin, мы получим результаты, затем мы можем изменить запрос.