我正试图在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只有两个参数)。