根据用户输入从DB中选择数据

时间:2016-05-21 20:04:27

标签: php mysql

我通常非常擅长从数据库中检索数据,但我已经停滞不前了。

我有一个搜索栏,可以将用户定向到另一个页面,以显示他们在第一页上搜索过的产品。我的网站允许用户搜索他们所在地区的外卖。在第二页上,我有一个下拉列表,用于搜索该区域的不同食品类别。

我的问题是我有近30个食品类别,并非所有区域都有30个类别中的每个类别的外卖关节,我试图仅显示该区域的食品类别而不显示其他类别。到目前为止,我的查询显示了所有30个类别,无论区域实际具有多少类别,当我将WHERE设置为除restaurant_id以外的任何类别时,类别不再显示。

我已经尝试使用Inner加入2/3表来使这个查询工作,但没有快乐。

function prompt ...

查询

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

我试图从Pcode等于用户输入代码的表中选择所有内容。每个餐厅提供的邮政编码保存在Delivery_Pcode.Pcode中,$ searchq在页面顶部定义为输入的邮政编码$ _post值。

我试过了: WHERE Restaurant_name = $ rest_name(也已定义) WHERE Restaurant_name = $ rest_name和Restaurant_id = $ rest_id(也已定义)

我不知道我是否正在考虑深入研究这个问题,并且有一种非常简单的方法(我倾向于这样做),或者我需要删除查询并重新开始......建议或指导非常感谢。

我知道查询有效,因为填充它只是导致我出问题的查询。

1 个答案:

答案 0 :(得分: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 ."';";