我正在尝试在我从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我不确定这是否是解决问题的正确方法,但我现在已经向您描述了我的思路和问题。
当我没有留下任何细节时,我理解你的沮丧,我再次道歉,因为浪费你的时间写一个写得不好的问题,我会记得确保我未来的问题/答案更加详细。
答案 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
已正确清理并转义。