我正在尝试检查books_ordered表,以获取已订购的书籍ISBN列表。如果ISBN_sedered表中存在ISBN,我不希望它显示在搜索结果列表中。我有以下代码:
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表中的第一个isbn的脚本,有没有人有任何想法?我猜这是与while循环中的括号有关,我只是想不出来。或者,如果有人知道这样做的更好方法,将非常感激。感谢。
答案 0 :(得分:1)
在单个查询中过滤掉书表中不需要的结果会更有效,如下所示:
select b.* from book b
left join books_ordered o on b.isbn = o.isbn
where o.isbn is null
答案 1 :(得分:0)
“book”的数据库结构是什么?您可以轻松地制作“JOIN”-Command。
答案 2 :(得分:0)
您只存储$ isbn中的最后一个值,因为它不是数组。 您需要将isbn添加到数组中,然后针对该数组检查第二个查询中的每一行。
但我可能会在SQL语句中进行处理。类似的东西:
SELECT * FROM book where isbn not in (select isbn from books_ordered)
答案 3 :(得分:0)
如果我理解得很好,你只想表明书籍还没有订购。
您可以使用此SQL语句:
SELECT * FROM book WHERE isbn_row NOT IN (SELECT isbn FROM books_ordered)
首先,我们选择了有序书籍的isbn:SELECT isbn FROM books_ordered
当我们有列表时,使用NOT IN条款我们可以从BOOK中选择所有书籍,除了我们在第一句中获得isbn的所有书籍。
我希望对你有用。