这个mySQL IF语句出了什么问题?

时间:2012-01-03 11:21:47

标签: php mysql

我正在尝试在我从YouTube视频中学到的mySQL查询中执行此IF语句。我不太确定会出现什么问题。我确实得到以下mysql错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'IF(Cuisine!='Cuisine',WHERE Cuisine ='Cuisine')按顺序排列   restaurantID'在第2行

好的,抱歉缺乏细节。让我再解释一下。

在我的页面上,我有一个HTML表单,其中包含3个下拉菜单,用作“过滤器”。其中一个“过滤器”的默认选项是“烹饪”,它充当标题,如果尚未更改,则表示用户不希望将“烹饪”用作搜索过滤器。但是,如果它改为说“西方”,那么显然用户想要使用它。

现在,上述问题很难解决,因为在上述场景中一次只有一个过滤器。但是,如果同时使用多个过滤器,这对我来说很复杂,我不知道如何解决这个问题。

我的解决方案是去Google搜索mySQL中的某种IF语句。我偶然发现了这个视频(这可能相当不错,但是因为我当时非常匆忙,可能会误解它)。以下是视频:http://www.youtube.com/watch?v=3xK5KKQx-J0

我认为,如果我可以使用这个条件并尝试烹饪,我可以研究和修改它并进行更多工作以使其完全让过滤系统工作。

在下面的代码中,我的目标是在SQL中检查PHP变量是什么,如果它是'烹饪',那么我不想执行'WHERE Cuisine = $ cuisine'部分查询。 $ cuisine是一个变量,它使用“POST”方法从简单的HTML / AJAX表单下拉菜单中获取。

<?php
    $result = mysql_query("SELECT * FROM restaurants 
    IF($cuisine != 'Cuisine', WHERE Cuisine='$cuisine')
    ORDER BY restaurantID
    ")
    or die(mysql_error()); 
?>

P.S我不确定这是否是解决问题的正确方法,但我现在已经向您描述了我的思路和问题。

当我没有留下任何细节时,我理解你的沮丧,我再次道歉,因为浪费你的时间写一个写得不好的问题,我会记得确保我未来的问题/答案更加详细。

4 个答案:

答案 0 :(得分:1)

你想做什么?如果要选择Cuisine列不是“烹饪”的所有行,请使用WHERE子句:

SELECT * FROM restaurants 
WHERE Cuisine != 'Cuisine'
ORDER BY restaurantID

答案 1 :(得分:1)

未完全理解您的问题,但如果您想通过特定菜肴选择所有餐厅并按餐厅ID订购,那么您可以使用:

$result = mysql_query("SELECT * FROM restaurants WHERE Cuisine = '$cuisine' ORDER BY restaurantID")

答案 2 :(得分:1)

我看到了多个问题,只有在您提供更多信息时才能回答。截至目前,SQL语法中的错误是, IF条件的语法是

IF(<condition>, <value if true>, <value if false>)

令你烦恼(你只有两个参数)。

答案 3 :(得分:1)

我会将条件从SQL查询移到PHP,在那里构建正确的查询。

if( $cuisine == 'Cuisine' ) ) {
    $conditions = '1';   // "WHERE 1" matches every record
}
else {
    $conditions = "Cuisine='$cuisine'";
}

$result = mysql_query( "SELECT * FROM restaurants 
    WHERE $conditions
    ORDER BY restaurantID
") or die(mysql_error()); 

以上假设$cuisine已正确清理并转义。