PHP / MYSQLI:INNER JOIN搜索栏查询问题

时间:2016-05-13 22:32:58

标签: php mysql mysqli

这是我第一次创建搜索栏。 搜索栏位于索引/主页上,它处理在线食品配送服务的英国邮政编码。搜索栏的概念是查看餐馆提供给用户地址的内容。搜索栏成功将用户重定向到菜单选择页面。但是,这是我的问题开始的地方。

愚蠢的我,已经创建了一个动态菜单选择页面,所以当在管理面板中创建一个新餐厅时,它会自动显示在此页面上。它目前成功运作,它显示了数据库中的所有餐厅,无论区域或邮政编码。

由于这是用户在搜索邮政编码时所指向的页面,我现在正在尝试将我的动态菜单选择页面与搜索栏查询相结合,例如,如果用户键入E14 ABU,则所有餐馆都在E14将出现在此页面上。听起来很直接,但是因为在餐馆菜单页面中调用的餐厅详细信息在一个表格中,而在另一个表格中的邮政编码我使用了内部联接来加入他们两个。但查询无效。

我知道查询有效,因为它用于打印动态菜单选择页面。我的查询是打印我或死的"无法搜索!"。我用过

 var_dump($sql) 

  if (!$sql) {
  die('Invalid query: ' . mysql_error());
  }

但没有打印,这令人困惑。 只是一个空白的白页。

代码

   output='';



   //return to home page if not entered via search
   if(isset($_POST['search'])){
   $searchq= $_POST['search'];

             $sql=mysqli_query($dbc,"SELECT Rest_Details.Resturant_ID, Rest_Details.Resturant_name, Rest_Details.Res_Address_Line_1, Rest_Details.City_name, 
                 Rest_Details.Avg_Del,Delivery_Pcode.Pcode 
    FROM Rest_Details
    INNER JOIN Delivery_Pcode
    ON Delivery_Pcode.Restaurant_ID=Rest_Details.Restaurant_ID
    WHERE Delivery_Pcode.Pcode LIKE '%$searchq'") or die ("could not search!");

             }

在页面下方。

      print("$output"); 

我现在只打算打印餐馆名称,直到我可以查询工作。 我的网页已成功连接到数据库,我有错误处理程序,搜索栏名称是搜索。 有什么建议?将不胜感激

2 个答案:

答案 0 :(得分:-1)

如果你的字段名称是正确的,那么试试这个:

$sql=mysqli_query($dbc,"SELECT Rest_Details.Resturant_ID, Rest_Details.Resturant_name, Rest_Details.Res_Address_Line_1, Rest_Details.City_name, Rest_Details.Avg_Del,Delivery_Pcode.Pcode 
     FROM Rest_Details INNER JOIN Delivery_Pcode
     ON Delivery_Pcode.Restaurant_ID=Rest_Details.Restaurant_ID
     WHERE Delivery_Pcode.Pcode LIKE '%".$searchq."'") or die ("could not search!");

我希望你能得到你的结果。

答案 1 :(得分:-1)

转义字符串然后进行查询。

$searchq = mysqli_real_escape_string($dbc, $_POST['search']);     
$result = mysqli($dbc, "SELECT dpc.Pcode, rd.Resturant_ID, rd.Resturant_name, rd.Res_Address_Line_1, rd.City_name, rd.Avg_Del FROM Delivery_Pcode dpc INNER JOIN Rest_Details rd ON dpc.Restaurant_ID = rd.Restaurant_ID WHERE dpc.Pcode LIKE '%$searchq'");

$results = [];
while($row = mysqli_fetch_assoc($result)) {
   $results[] = $row;
}

// print results array
print_r($results);

您必须确保Delivery_Pcode.Pcode是VARCHAR类型

了解Sanitizing User Input