我试图编写一个PHP代码来选择表格表格:
有些书没有图片,所以我想跳过它并选择另一本书。 我已经编写了这段代码,但它并不适合我。
现在我只获得了5条记录!它必须是6,因为我在书籍选择查询中受限制。
$slider_sql = "select * from books limit 6";
$slider_result = $conn->query($slider_sql);
while($slider_row = $slider_result->fetch_assoc()) {
extract($slider_row);
$img_sql = "SELECT big_img FROM images WHERE book_id = '$id'";
$img_rs = $conn->query($img_sql);
$img_row = $img_rs->fetch_assoc();
if ($img_rs->num_rows == 0)
continue; //--> here I want to start while again to select another book.
echo $book_name.'<br>';
echo $img_row['big_img'].'<br>';
}
感谢您的帮助和时间!
答案 0 :(得分:3)
而不是在循环中使用子查询(这几乎总是一个坏主意!),而是使用JOIN
代替,这简化为一个查询而不是两个查询。然后设置big_img
不应为空的条件。这可以保证您只能找到图像与图书匹配的行。 LIMIT
仍然只能确保返回6行。 MySQL中的<>
与!=
相同。
$slider_sql = "SELECT b.book_name, i.big_img
FROM books b
JOIN images i
ON i.book_id=b.id
WHERE i.big_img <> ''
LIMIT 6";
$result = $conn->query($slider_sql);
while ($row = $result->fetch_assoc()) {
echo $row['book_name'].'<br>';
echo $row['big_img'].'<br>';
}