2017-10-28 54 views
-2

我正在嘗試創建一個網站,但我的通配符搜索查詢不斷給我提出問題。非功能性php通配符搜索查詢

它不顯示任何錯誤,但結果顯示爲空白。 你可以在這裏看到它在這個網站:luke.dx.am/Search.php

她是我的搜索欄的代碼。

<!-- Custom Search --> 
<form action="Search.php" method="post"> 
    <input type="text" name="search" placeholder="Search"/> 
    <input type="submit" value=">>"/> 
</form> 

這是我的代碼,執行搜索查詢。

<?php 
$output = ''; 
$searchq = ''; 
$search_query = ''; 
$search_results = ''; 
$result = ''; 

if(isset($_POST['search'])) { 
$searchq = $_POST['search']; 
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq); 

//Query for the search engine 
$search_query = "SELECT Item.Item, Category.Category, Colour.Colour, 
Description.Description, products.Price, products.Stock, products.date, 
Sexs.Sex, Sizes.Size, Designers.Designer, Designers.Email, 
Designers.Phone, Designers.Address, Image.Image 
FROM products 
INNER JOIN Category 
ON Category.CatagoryCode=products.CatagoryCode 
INNER JOIN Colours 
ON Colour.ColourCode=products.CatagoryCode 
INNER JOIN Description 
ON Description.DescriptionCode=products.DescriptionCode 
INNER JOIN Designers 
ON Designers.DesignerCode=products.DescriptionCode 
INNER JOIN Sexs 
ON Sexs.SexCode=products.SexCode 
INNER JOIN Image 
ON Image.ImageCode=products.ItemCode 
INNER JOIN Item 
ON Item.ItemCode=products.ItemCode 
INNER JOIN Sizes 
ON Sizes.SizeCode=products.SizeCode 
WHERE Item.Item LIKE '%$searchq%' OR Category.Category LIKE '%$searchq%' 
OR Colour.Colour LIKE '%$searchq%' OR Description.Description LIKE 
'%$searchq%' OR Sexs.Sex LIKE '%$searchq%' OR Sizes.Size LIKE 
'%$searchq%' OR Designers.Designer LIKE '%$searchq%'"; 

$search_results=mysqli_query($con, $search_query); 
if($result == FALSE) { 
?><p>Error</p><?php 
die(mysql_error()); // TODO: better error handling 
}else{ 

//Runs in a while loop 

while($output=mysqli_fetch_array($result)) 
{ 
?> 

對不起,代碼的絕對牆。

+0

已經有mysql的警告顯示在您的主頁 –

+1

它應該是search_result吧? –

+0

@result我認爲 –

回答

1

您需要更正您的代碼。您將在$ search_results中獲得結果,然後在$ result中進行檢查。

$search_results=mysqli_query($con, $search_query); 
if($result == FALSE) { ... 

需要是

$search_results=mysqli_query($con, $search_query); 
if($search_results == FALSE) {... 
+0

更改了代碼,但搜索出現空白。 – luke

+0

您還需要更改mysqli_fetch_array以使用$ search_results而不是$ result。另一個技巧是echo $ search_query,然後在MySQL客戶端中使用該查詢並運行它並查看它是否顯示任何記錄 – Jan

+0

仍顯示空白結果 – luke

0

首先申請一個名字你的提交按鈕。

<input name="submit" type="submit" value=">>"/> 

第二次檢查是否設置(單擊),然後處理表單。

<?php 
$search_results=mysqli_query($con, $search_query); 
if(isset($_POST['submit'])){ 

檢查像這樣的結果不需要使用$ result == FALSE。 !!好像是說沒有(如果沒有結果)

if(!$search_results){ 
?><p>Error</p><?php 
die(mysql_error()); // TODO: better error handling 
}else{ 

//運行在一個while循環

while($output= $search_results->fetch_assoc()) { 
$outputA = $output['tableNamea']; 
$outputB = $output['TanbeNameb']; 
} 

整件事

<?php 
$search_results=mysqli_query($con, $search_query); 
if(isset($_POST['submit'])){ 
if(!$search_results){ 
?><p>Error</p><?php 
die(mysql_error()); // TODO: better error handling 
}else{ 
while($output= $search_results->fetch_assoc()) { 
$outputA = $output['tableNamea']; 
$outputB = $output['TanbeNameb']; 
} 
?> 
+0

查詢應該放在哪裏? – luke

+0

將您的查詢置於while循環之前 – Jonny