如果产品没有图像(即图像表中根本没有产品的行),我正在尝试制作一个 noimage 存根。
$sql = "SELECT * FROM images WHERE product_id='$id' ORDER BY sort ASC LIMIT 5";
if($result = $conn->query($sql)){ foreach($result as $row) { $image = $row['image'];
if(mysqli_num_rows($result) == 0) {
$image = "../ui/img/noimage.jpg";
}
...
存根不出现。如果我对所有产品进行检查并显示此 noimage,则一切正常,对于表中有此行的产品,将显示 noimage。
if(mysqli_num_rows($result)) {
$image = "../ui/img/noimage.jpg";
}
如果您只显示echo mysqli_num_rows($result)
有图片的产品的行数,而没有图片的产品则不显示。错误在哪里?这可能是设计问题。这是完整的代码:
<div uk-slider>
<div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" loading="lazy">
<ul class="uk-slider-items uk-grid uk-grid-match">
<?
$sql = "SELECT * FROM images WHERE product_id='$id' ORDER BY sort ASC LIMIT 5";
if($result = $conn->query($sql)){
if(mysqli_num_rows($result) == 0) {
$image = "../ui/img/noimage.jpg";
?>
<li>
<a href=product.php?id=<?echo $id?>><img src="<?echo $image?>" style="object-fit:cover; max-height:400px; min-height:400px; width:100%;"></a>
</li>
<?
} else if (mysqli_num_rows($result) > 0) {
foreach($result as $row) { $image = $row['image'];
?>
<li>
<a href=product.php?id=<?echo $id?>><img src="<?echo $image?>" style="object-fit:cover; max-height:400px; min-height:400px; width:100%;"></a>
</li>
<?
}}} else { echo "Ошибка: " . $conn->error;}
?>
</ul>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href="#" uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href="#" uk-slidenav-next uk-slider-item="next"></a>
</div>
<ul id = "dotnav-category" class="uk-slider-nav uk-dotnav uk-flex-center"></ul>
</div>
mysqli_num_rows
显示为查询检索到的记录数。为什么你需要它 - 是未知的。如果表中没有图片 -
null
,则需要检查该值:对于PHP7.0,你可以写得更简单:
根据新添加的代码:只有在有图片时才添加页面链接,如果没有,则还必须显示一些东西......但你没有。
li a
块中的文本缺少if
从给出的代码来看
if(mysqli_num_rows($result) == 0) {
,它进入了块,foreach($result as $row) {
即当有记录时,然后检查 numrose .. 很明显它永远不会执行,因为如果 numrose 不为0,我们就会到达那里。试试这个代码