2012-01-03 76 views
-2

我試圖在我從YouTube視頻中學到的mySQL查詢中執行此IF語句。我不太確定發生了什麼問題。我得到以下的mysql錯誤:這個mySQL IF語句有什麼問題?

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF(Cuisine != 'Cuisine', WHERE Cuisine='Cuisine') AS ORDER BY restaurantID' at line 2

好吧,對於缺乏細節抱歉。讓我再解釋一下。

在我的頁面上,我有一個HTML表單,其中有3個下拉菜單,用作「過濾器」。其中一個「過濾器」的默認選項是美食,其作爲標題,如果沒有更改,則意味着用戶不希望將美食作爲過濾器用於搜索。然而,如果它改變爲'西方',那麼顯然用戶想要使用它。

現在,上述問題很容易解決,因爲在上述場景中一次只有一個過濾器。但是,當一次使用多個過濾器時,這是對我來說變得複雜的地方,我不知道如何解決這個問題。

我的解決方案是去搜索谷歌在mySQL中的某種IF語句。我看過這段視頻(這可能相當不錯,但是因爲當時我很匆忙,可能會誤解它)。這裏是視頻:http://www.youtube.com/watch?v=3xK5KKQx-J0

我想如果我可以使用這個條件並嘗試它的美食,我可以研究和修改它,並在它上面做更多的工作,以使它完全獲得過濾系統的工作。

在下面的代碼中,我的目標是在SQL中檢查一個PHP變量= to,如果它= = Cuisine,那麼我不想執行'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

你想完成什麼?它看起來像是在混合使用PHP和SQL格式,但不太清楚查詢應該做什麼。 – JJJ 2012-01-03 11:24:32

+0

你想在那裏實現什麼? – 2012-01-03 11:24:32

+0

是什麼阻止你使用普通的'where'子句? – adarshr 2012-01-03 11:24:37

回答

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已被正確消毒和轉義。

1

你想做什麼?如果你想選擇的所有行Cuisine列不是「菜」,用WHERE條款:

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

沒有完全理解你的問題,但如果你想選擇所有餐館給出的美食,責令通過餐廳ID,您可以使用:

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

我看到多個問題,只有您提供更多信息才能應答。截至目前,在SQL語法錯誤是, 的IF條件的語法

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

這是困擾你(你只有兩個參數爲你IF)。