PHP / MySQL — добавление строк вместе для создания запроса ..?

#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, мы получим результаты, затем мы можем изменить запрос.