【发布时间】:2020-05-13 17:43:32
【问题描述】:
我是 PHP 和 MySQL 的新手,我目前正在制作博客门户。在索引页面上,所有最近的帖子都会显示标题、作者、日期、帖子的前 150 个字符以及帖子中的图片。
我在 MySQL 中有两个表:“post”和“image”,我正在使用 foreach 循环遍历这两个表,以检查一个帖子是否有一个具有相同 postId 的图像连接到它。我的问题是,如果一篇文章有不止一张图片,我只希望显示一张图片,而不是所有图片都像现在这样。我尝试从 post.id = image.postId 的用户中选择所有帖子进行查询,但是没有显示没有图像的帖子。
感谢任何关于如何使这项工作发挥作用的意见或建议,或者完全不同的方法。
在 PHP/HTML 文件中(删除了循环中添加标题/内容等的部分代码):
<?php foreach($allPosts as $key => $onePost): ?>
<?php foreach($allImages as $one => $oneImage): ?>
<?php if ($oneImage['postId'] === $onePost['id']): ?>
<?php echo '<img src="../Images/' . $oneImage['filename'] . $secondString; ?>
<?php endif; ?>
<?php endforeach;?>
<?php endforeach;?>
在 PHP/数据库文件中:
function selectAllPosts($conn)
{
$sql = '
SELECT p.*
, u.username
FROM post p
JOIN users u
ON p.userId = u.id
ORDER
BY created DESC
';
return $allPosts = db_select($conn, $sql);
}
function selectAllImages($conn)
{
$sql = 'SELECT * FROM image';
return $postImages = db_select($conn, $sql);
}
【问题讨论】:
-
如果是我,我会暂时忘记所有非 sql 的东西,而是专注于查询
-
提示:您不需要为每个语句打开
<?php和关闭?>标签。只需在 php 脚本的开头打开一个标签数据,然后在结束时关闭它。