什么';这个mySQL IF语句有问题


What's wrong with this mySQL IF Statement?

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

您的SQL语法有错误;查看手册与您的MySQL服务器版本相对应,以便使用正确的语法near'IF(Cuisine!='Cuisine',WHERE Cuisine='Cusine')AS ORDER BY 2号线的餐馆ID'

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

在我的页面上,我有一个HTML表单,它有三个下拉列表,充当"过滤器"。其中一个"过滤器"的默认选项是Cuisine,它充当标题,如果没有更改,则意味着用户不想将Cuisine用作搜索的过滤器。然而,如果它已经改为"西方",那么显然用户想使用它

现在,上面的问题很容易解决,因为在上面的场景中,一次只有一个过滤器。然而,当同时使用多个过滤器时,这对我来说会变得复杂,我不知道如何解决这个问题。

我的解决方案是在谷歌上搜索mySQL中的某种IF语句。我看到了这个视频(可能很好,但由于当时我很匆忙,可能误解了它)。以下是视频:http://www.youtube.com/watch?v=3xK5KKQx-J0

我想,如果我能使用这种条件并将其用于烹饪,我可以对其进行研究和修改,并对其进行更多的研究,使其完全使过滤系统工作。

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

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

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

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

我会将条件从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已正确消毒和转义。

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

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

没有完全理解您的问题,但如果您想按给定的菜肴选择所有餐厅,并按餐厅ID点餐,那么您可以使用:

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

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

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

这会困扰您(IF只有两个参数)。