2016-05-13 125 views
0

这是我第一次创建搜索栏。 该搜索栏位于索引/主页上,它处理英国邮政编码以获得在线食品配送服务。搜索栏的想法是查看餐厅提供给用户的地址。搜索栏成功将用户重定向到菜单选择页面。但是,这是我的问题开始的地方。PHP/MYSQLI:INNER JOIN搜索栏查询问题

傻了,我已经创建了一个动态的菜单选择页面,所以在管理面板中创建一个新餐厅的那一刻它会自动显示在此页面上。它除了目前成功运行外,还显示了DB中的所有餐馆,不管区域或邮政编码如何。

因为这是用户搜索他们的邮政编码的页面,我现在试图将我的动态菜单选择页面与搜索栏查询结合起来,例如,如果用户输入E14 ABU,所有餐馆在E14中会出现在这个页面上。听起来很简单,但是因为餐馆菜单页面中调用的餐厅细节在一个表格中,而另一个餐厅的邮政编码使用了INNER JOIN来加入它们。但查询不起作用。

我知道查询的工作原理与打印动态菜单选择页面一样。我的查询是打印回我的或死的“无法搜索!”。我已经使用

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"); 

我只是试图打印餐厅的名称,直到我能得到查询工作。 我的网页成功连接到数据库,我有错误处理程序,搜索栏名称是搜索。 有什么建议吗?

$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!"); 

我希望你能得到你的结果:如果你的字段名cerrect那就试试这个,将不胜感激

+1

'mysql_error'不'mysqli'工作。你也应该使用预先准备的语句。 – chris85

+0

@ chris85谢谢 – jerneva

+1

使用'mysqli_error($ dbc)'来查看错误的原因。 – Barmar

回答

-1

+0

不幸的是,它不,但谢谢你 – jerneva

-1

Escape string then make query。

$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