2016-05-21 30 views
2

私は通常、DBからデータを取得するのにはとても良いですが、私はまだ立ち止まっています。ユーザ入力に基づいてDBからデータを選択

私は最初のページで検索した商品を別のページに表示する検索バーを持っています。私のウェブサイトでは、ユーザーはその地域のテイクアウトを検索することができます。 2番目のページにはドロップダウンリストがあり、これはそのエリアのさまざまな食品カテゴリを検索するために使用されます。

私の問題は、30種類の食べ物のカテゴリがあります。すべての地域に30種類の食べ物の種類があるわけではなく、他の食べ物のカテゴリのみを表示しようとしています。これまでのクエリでは、実際にカテゴリの数に関係なく30のカテゴリがすべて表示され、WHEREをWHERE以外に設定するとカテゴリは表示されなくなりました。

私は、2/3テーブルを結合してこのクエリを動作させることを試みましたが、喜びはありませんでした。

Delivery_Pcode Tbl 
1 Del_code_id 
2 Restaurant_ID 
3 Pcode 
4 Del_Price 


Rest_Category tbl 
1 CategoryID 
2 Cuisine_category 
3 Category_img 

Rest_Details Tel 
1 Resturant_ID 
2 Resturant_name 
3 City_name 
4 Cat_ID 

クエリ

$get_cats = "SELECT * FROM Rest_Category 
        INNER JOIN Rest_Details 
        ON Rest_Category.CategoryID = Rest_Details.Cat_ID 
        INNER JOIN Delivery_Pcode 
        ON Delivery_Pcode.Restaurant_ID = Rest_Details.Resturant_ID 
        WHERE Delivery_Pcode.Pcode= $searchq"; 

私はPコードは、ユーザーの入力コードに等しいテーブルからすべてを選択しようとしています。各レストランが配信するポストコードはDelivery_Pcode.Pcodeに保存され、$ searchqはページの先頭に入力されたポストコード$ _post値として定義されます。

私が試してみました: WHERE RESTAURANT_NAME = $ rest_name(また、定義された) WHERE RESTAURANT_NAME = $ rest_nameとRestaurant_id = $ rest_id(また、定義された)

私はこの奥深くに考えていた場合、私は知りません非常に簡単な方法(私はそれを行う傾向がある)がある、または私は、クエリを削除し、再度開始する必要があります...アドバイスやガイダンスは大歓迎です。

私はクエリが動作することを知っています、それは私が問題を引き起こしているクエリだけです。

+0

「私は、クエリが動作します知っています"それはどういう意味ですか?また、試したクエリの出力は何ですか? – dimlucas

+1

$ searchq変数をサニタイズしないとクエリがSQLインジェクションにオープンしているので、クエリにPDOを使用し、変数をパラメータに渡してプレースホルダ(:searchq)を使用する必要があります。 –

+0

@dimlucas私は* FROM ....結果靴を選択したときと同様にクエリが機能することを意味します。問題はありません。私はちょうど私がそれをしたいことをするためにクエリを取得することはできません – user6362696

答えて

0

あなたは引用符

"SELECT * FROM Rest_Category 
       INNER JOIN Rest_Details 
       ON Rest_Category.CategoryID = Rest_Details.Cat_ID 
       INNER JOIN Delivery_Pcode 
       ON Delivery_Pcode.Restaurant_ID = Rest_Details.Resturant_ID 
       WHERE Delivery_Pcode.Pcode= '$searchq'"; 

かを追加してみてくださいすることができます(適切な入力をサニタイズする前に)それはちょうど私の問題を引き起こしているクエリです移入よう

"SELECT * FROM Rest_Category 
       INNER JOIN Rest_Details 
       ON Rest_Category.CategoryID = Rest_Details.Cat_ID 
       INNER JOIN Delivery_Pcode 
       ON Delivery_Pcode.Restaurant_ID = Rest_Details.Resturant_ID 
       WHERE Delivery_Pcode.Pcode= '" . $searchq ."';"; 
+0

そうですね。どうもありがとうございます – user6362696

関連する問題