我在我的博客上工作,我似乎无法解决这个问题。 if ($result->fetchColumn())
应该正常工作。它确实给出了错误但是当数据(行)存在时它没有显示任何内容。有什么问题?
<?php
$id = $_GET["id"];
$sql = "SELECT * FROM `posts` WHERE `id` = $id";
$result = $conn->query($sql);
if ($result->fetchColumn() > 0) {
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
echo '<div class="post-preview">
<a>
<h2 class="post-title">
'.$row["title"].'
</h2>
<h3 class="post-subtitle">
'.$row["content"].'
</h3>
</a>
<p class="post-meta"><a href="#">'.$row["creator"].'</a> | '.$row["date"].'</p>
</div>
<hr>';
}
}
else {
echo "<center><h1>Post does not exist.</h1></center>";
header("Refresh: 2; url=index.php");
}
?>
每当我删除行if ($result->fetchColumn() > 0) {
时,它都能正常工作。但我需要检查数据库中是否存在$ id。如果是,它应该显示数据,如果没有,它应该显示错误并链接回index.php。
答案 0 :(得分:1)
您的代码可能更简单
只需填充$ row变量,看看它是否包含任何内容。
<?php
$stmt = $conn->prepare("SELECT * FROM `posts` WHERE `id` = ?");
$stmt->execute([$_GET["id"]]); // essential to protect from SQL injection!
$row = $stmt->fetch(PDO::FETCH_ASSOC)
if ($row) {
echo '<div class="post-preview">
<a>
<h2 class="post-title">
'.$row["title"].'
</h2>
<h3 class="post-subtitle">
'.$row["content"].'
</h3>
</a>
<p class="post-meta"><a href="#">'.$row["creator"].'</a> | '.$row["date"].'</p>
</div>
<hr>';
}
else {
echo "<center><h1>Post does not exist.</h1></center>";
header("Refresh: 2; url=index.php");
}