PHP / MySQL - 将字符串附加在一起以进行查询..?

时间:2011-06-01 04:15:37

标签: php mysql string

有什么理由不适用吗?

$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 :(得分:0)

尝试加入

echo $events_query;
代码中的

语句,以查看生成的SQL是什么。通过这种方式查看任何错误要容易得多。一般来说,是的,这是完全合法的,并且生成这样的SQL很常见。

答案 1 :(得分:0)

构造查询的方法没有任何内在错误。您必须解释结果与您的期望有何不同,我建议回复/记录最终的$ events_query并将其与您的需求进行比较..

答案 2 :(得分:0)

字符串连接是构建SQL查询的合法方法,只要您遵守PHP的语法要求,就可以通过这种方式生成有效的SQL。

打印出生成的字符串(到日志文件或网页)并检查它是否与您认为生成的字符串匹配。它可能有一个杂散的引号或分号,它会改变或过早地终止查询。

将该字符串粘贴到MySQL的控制台中,看看它是否会产生任何其他错误。

关于直接接受用户输入到SQL查询的常见警告适用。

答案 3 :(得分:0)

 $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中运行我们得到的结果,我们可以修改查询。