2013-04-16 51 views
0

我正在檢查books_ordered表以獲取已訂購的書籍ISBN列表。如果ISBN存在於books_ordered表中,我不希望它顯示在搜索結果列表中。我有以下代碼:如果已經購買了搜索結果,請將其從搜索結果中刪除

include "include.php"; 
session_start(); 

$query1 = 'SELECT isbn as myisbn FROM books_ordered'; 
$result1 = mysqli_query($con, $query1) or die("Error in query $query1: " . mysqli_error()); 
while($row = mysqli_fetch_array($result1)){ 
$isbn=$row['myisbn']; 
} 

$query = 'SELECT * FROM book'; 
$result = mysqli_query($con, $query) or die("Error in query $query: " . mysqli_error()); 

while ($row = mysqli_fetch_array($result)){ 
if($isbn!=$row[0]){ 
echo $row[1]."<br>"; 
} 
} 
mysqli_close($con);    //closes the connection 

?> 

劇本我只需要在搜索結果中books_ordered表隱藏第一書號,沒有任何人有任何想法,爲什麼?我猜這是與while循環中的括號有關,我只是無法弄清楚。或者如果有人知道這樣做的更好方法,將不勝感激。謝謝。

回答

0

你只存儲在$ ISBN的最後一個值,因爲它不是一個數組。 您需要將isbn添加到數組中,然後檢查針對該數組的第二個查詢中的每一行。

但我可能會在SQL語句中進行處理。例如:

SELECT * FROM book where isbn not in (select isbn from books_ordered) 
+0

非常感謝,完美工作:) – user2197354

0

什麼是你的「書」的數據庫結構?您可以輕鬆地創建一個「JOIN」命令。

+0

已經排序謝謝。 – user2197354

1

這將是更有效地過濾掉從書表不需要的結果在一個單一的查詢,像這樣:

select b.* from book b 
left join books_ordered o on b.isbn = o.isbn 
where o.isbn is null 
+0

感謝您花時間做出迴應,我沒有嘗試您的答案,因爲我只是使用了最簡單的方法,但也許它會幫助其他人。 – user2197354

0

如果我理解的很好,只想顯示書籍還沒有訂購。

你可以使用這個SQL語句:

SELECT * FROM book WHERE isbn_row NOT IN (SELECT isbn FROM books_ordered) 

首先我們選擇的訂購書籍的ISBN:SELECT isbn FROM books_ordered 當我們有列表,使用該條款不在於我們可以從本書中的所有書籍,除了選擇所有我們在第一句話中得到的結果。

我希望對你有用。

+0

非常感謝您花時間回覆,您的回答與上述內容完全相同,並且工作完美。 – user2197354