PHP / MySQL - добавление строк вместе, чтобы сделать запрос ..? - PullRequest
1 голос
/ 01 июня 2011

Есть ли причина, по которой это не должно работать?

$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. Если нет, то это означает, что у меня есть логическая проблема, которую я бы предпочел, потому что я действительно не знаю, как еще выполнять эти запросы переменного типа, которые я хочу делать. В основном мои запросы будут зависеть от данных, введенных пользователем.

Спасибо.

Ответы [ 4 ]

0 голосов
/ 01 июня 2011
 $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, мы получим результаты, затем мы можем изменить запрос.

0 голосов
/ 01 июня 2011

В этом методе построения запроса нет ничего плохого. Вам нужно будет объяснить, чем результаты отличаются от ваших ожиданий, и я бы посоветовал повторить / записать окончательный $ events_query и сравнить его с вашими потребностями.

0 голосов
/ 01 июня 2011

Конкатенация строк является законным способом построения запроса SQL, и, если вы соблюдаете требования синтаксиса PHP, вы можете генерировать действительный SQL таким образом.

Распечатайте сгенерированную строку (в файл журнала или на веб-страницу) и убедитесь, что она соответствует тому, что, по вашему мнению, вы генерировали. У него может быть случайная кавычка или точка с запятой, которые изменят или преждевременно завершат запрос.

Вставьте эту строку в консоль MySQL и посмотрите, нет ли в ней дополнительных ошибок.

Применяются обычные предупреждения о принятии ввода пользователя непосредственно в запрос SQL.

0 голосов
/ 01 июня 2011

Попробуйте вставить в свой код оператор

echo $events_query;

, чтобы увидеть, что представляет собой сгенерированный SQL.Так гораздо проще увидеть любые ошибки.Вообще говоря, да, это совершенно законно, и генерация SQL, подобного этому, довольно распространена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...