2012-01-03 14 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

大丈夫、細部の不足について申し訳ありません。私はもう少しこれを説明しましょう。

私のページには、「フィルタ」として機能する3つのドロップダウンを持つHTMLフォームがあります。これらの「フィルタ」の1つのデフォルトオプションは、タイトルとして機能する「料理」です。変更されていない場合は、ユーザーが「料理」を検索のフィルタとして使用しないことを意味します。しかし、それが「西洋」と言うように変更された場合、明らかにユーザーはそれを使用したいと考えています。

上記のシナリオでは、一度に1つのフィルタしか存在しないため、上記の問題は解決するのが非常に簡単です。しかし、一度に複数のフィルタが使用されている場合、これは私にとっては複雑になり、この問題に対処する方法はわかりません。

私の解決策は、GoogleでmySQLのIF文を検索することでした。私はこのビデオを見に行きました(おそらくかなり良いですが、当時は非常に急いで、おそらくそれを誤解していたかもしれません)。 http://www.youtube.com/watch?v=3xK5KKQx-J0

私は条件を使用して料理を試してみると、それを研究して修正し、フィルターシステムを完全に稼働させるためにもう少し作業することができたと私は考えていました。

私の目的は、SQLでPHPの変数が何であるかを調べることです。もしそれが '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

+0

ここで何を達成しようとしていますか? –

+0

普通の 'where'節を使用できないのはなぜですか? – adarshr

答えて

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でご利用いただけます:

1

私は複数の問題を抱えていますが、詳細はこちらからご連絡ください。今の時点でSQL構文にエラーが 、あるIF条件の構文は、(あなたがあなたのIFのための2つのパラメータのみを持っている)あなたを悩まれ

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

です。

関連する問題