如果没有从 PDO Fetch() 请求返回的记录,则无法回显字符串
Cannot Echo Out String If No Records Returned From PDO Fetch() Request
我有一个从 MySQL 数据库中获取记录的 PDO 语句,如果没有返回任何记录(即用户尚未添加任何帖子),我想将一些文本回显到页面。
我想在 while
循环之后我可以做一个 if 语句来确认行的存在。这确实回显了字符串,但它在显示帖子时也回显了字符串?
<?php
isset($_GET['username']) ? $username = $_GET['username'] : header("Location: login.php");
$stmt = $connection->prepare("SELECT * FROM posts WHERE username = :username");
$stmt->execute([':username' => $username]);
while ($row = $stmt->fetch()) {
$db_post_id = htmlspecialchars($row['image_id']);
$db_title = htmlspecialchars($row['image_title']);
$db_tags = htmlspecialchars($row['image_tags']);
$db_processed= htmlspecialchars($row['user_processed']);
$db_username = htmlspecialchars($row['username']);
$db_profile_image_filename = htmlspecialchars($row['profile_image']);
if ($db_processed === 'yes') {
?>
<article>
<!-- HTML goes here that includes above data from database -->
</article>
<?php }
}
if ($row == 0) {
echo "no data to show";
}
?>
您想知道是否有结果($stmt->fetch())。
如果不是,则打印某条消息。
下一行是一个循环,当条件 return 为真时运行,最终这个条件将 return 为假(所有结果已被提取)并且 $row 将为假。
但即使没有结果,fetch() 也会 return false。
while ($row = $stmt->fetch()) {
因此,检查 $row 的值并不是您请求的良好指标。
解决您的问题的方法是使用另一个布尔变量。
$hasResults = false;
while ($row = $stmt->fetch()) {
$hasResults = true;
然后,稍后:
if (!$hasResults) {
echo "no data to show";
}
我有一个从 MySQL 数据库中获取记录的 PDO 语句,如果没有返回任何记录(即用户尚未添加任何帖子),我想将一些文本回显到页面。
我想在 while
循环之后我可以做一个 if 语句来确认行的存在。这确实回显了字符串,但它在显示帖子时也回显了字符串?
<?php
isset($_GET['username']) ? $username = $_GET['username'] : header("Location: login.php");
$stmt = $connection->prepare("SELECT * FROM posts WHERE username = :username");
$stmt->execute([':username' => $username]);
while ($row = $stmt->fetch()) {
$db_post_id = htmlspecialchars($row['image_id']);
$db_title = htmlspecialchars($row['image_title']);
$db_tags = htmlspecialchars($row['image_tags']);
$db_processed= htmlspecialchars($row['user_processed']);
$db_username = htmlspecialchars($row['username']);
$db_profile_image_filename = htmlspecialchars($row['profile_image']);
if ($db_processed === 'yes') {
?>
<article>
<!-- HTML goes here that includes above data from database -->
</article>
<?php }
}
if ($row == 0) {
echo "no data to show";
}
?>
您想知道是否有结果($stmt->fetch())。 如果不是,则打印某条消息。
下一行是一个循环,当条件 return 为真时运行,最终这个条件将 return 为假(所有结果已被提取)并且 $row 将为假。 但即使没有结果,fetch() 也会 return false。
while ($row = $stmt->fetch()) {
因此,检查 $row 的值并不是您请求的良好指标。 解决您的问题的方法是使用另一个布尔变量。
$hasResults = false;
while ($row = $stmt->fetch()) {
$hasResults = true;
然后,稍后:
if (!$hasResults) {
echo "no data to show";
}