【发布时间】:2021-01-11 19:50:53
【问题描述】:
目前我使用 2 个语句从我的数据库中选择数据,但我确信只有一个语句是可能的,我只是不知道如何。我的数据库中有 id、productid、thumbnailimage、is_mainimage。 'is_mainimage' 单元格可以是 0 或 1。如果它是主图像,则为 1。我想选择所有图像,但如果有主图像,则仅在引导卡上显示主图像。如果没有,则显示我文件夹中的静态图像。如果用户点击卡片,它应该显示一个带有其他图像的模式。 这是atm的样子:
// Thumbnail images
$sql2 = "SELECT * FROM images WHERE productid=?";
$stmt = $link->prepare($sql2);
$stmt->bind_param("i", $productid);
$productid = $row['id'];
$stmt->execute();
$result2 = $stmt->get_result();
$data = $result2->fetch_all(MYSQLI_ASSOC);
// Main image
$sql3 = "SELECT * FROM images WHERE productid=? AND is_mainimage=?";
$stmt2 = $link->prepare($sql3);
$stmt2->bind_param("ii", $productid, $is_mainimage);
$productid = $row['id'];
$is_mainimage = 1;
$stmt2->execute();
$result3 = $stmt2->get_result();
$data2 = $result3->fetch_all(MYSQLI_ASSOC);
显示主图像或静态“no-image.png”的卡片顶部
<?php
$num_rows = mysqli_num_rows($result3);
if ($num_rows == 1) {
foreach ($data2 as $rec2) {
$mainimage = $rec2['thumbnailimage'];
}
} else {
$mainimage = "images/no-image.png";
}
echo "<img src='" . $mainimage . "' class='card-img-top' alt='Main Image'/>";
所以我的问题是,如何只选择一个才能使用剩余的图像?
【问题讨论】:
-
$is_mainimage在哪里定义?这是在此处显示的第一个 sql 命令之前吗?如果是,那么第一个命令是多余的,$productid最初定义在哪里,为什么使用它作为输入查询数据库只是为了从查询中准确返回那条数据? -
我用
$is_mainimage = 1给了它一个值,因为我需要主图像语句中的那些。 -
对不起,我不确定我是否理解你。你能在我的代码上显示我应该改变什么吗?
-
如果您将查询更改为:
SELECT * FROM images WHERE productid = ? ORDER BY is_mainimage DESC,您将获得该产品的所有图片,其中is_mainimage设置为1的图片作为第一个结果。 -
如果我需要模态框上的其余部分,如何仅在卡上显示主图像?没有图片怎么处理?