我有两个页面,如一般博客文章,1页作为文章的小预览和1页全文。每个小型预览文章都有一个名为“Read More”的按钮,当用户点击它时,所有文章都会在单独的页面中打开。我上传的文章包含列ID,名称,作者,标题,文章和日期。在第1页,所有文章的预览都完美地从数据库中检索,但“READ MORE”按钮不能正常工作。当点击任何文章预览的“阅读更多”时,根据预览,只显示第一篇文章而不是不同的文章。
这是代码
第1页(预览页面)
<?php
$db = mysqli_connect("localhost", "root", "", "myblogs.com");
$sql = "SELECT * FROM blogs";
$result = mysqli_query ($db, $sql);
while ($row = mysqli_fetch_array($result)){
echo " <div class='date-posts'>
<a href='index.php'>".$row['title']."</a></h1>
</div>
<div>".$row['author']."</div>
<div><img src='blogs/".$row['image']."'><div class='blogsampletext'>".$row['article']."</div>
<a href='page2.php.'>Read More</a>
</div>
";
}
?>
第2页(显示完整的文章文字)
<?php
$db = mysqli_connect("localhost", "root", "", "myblogs.com");
$sql = "SELECT * FROM blogs LIMIT 1";
$result = mysqli_query ($db, $sql);
while ($row = mysqli_fetch_array($result)){
echo "<tr><td colspan='2' align='center'><h2>".$row['title']."</h2><br>
<img src='blogs/".$row['image']."'><br>
<h4>".$row['author']."</h4>
</td></tr>";
echo "<tr><td colspan='2'><hr>".$row['article']."</td></tr>";
}
?>
答案 0 :(得分:0)
您指向下一页的链接不完整:它不包含对您要阅读的文章的引用。
您没有提及主键,因此,对于此示例,我们假设它被称为id
。
您的链接应采用以下形式:
<a href='page2.php?id={$row['id']}'>
这将包括id
作为查询字符串。
接下来,您的第二页应该获得id
并使用它:
$id=intval($_GET['id']);
$sql = "SELECT * FROM blogs WHERE id=$id";
通常在使用用户数据时需要担心SQL注入,但intval
函数会处理这个问题。
您不再需要LIMIT
,因为根据定义,主键是唯一的。
由于您依赖于用户遵循正确的步骤,因此您会留下一点暴露:
id
作为默认设置来完成此操作。id=nastystuff
或更糟糕的东西来破坏事物。在这种情况下,由于它应该是一个整数,intval
会将未知的任何内容转换为0
。