根据心愿单是公共的还是私人的,以及心愿单中是否有0个或0个以上的项目来显示内容

  • 本文关键字:0个 心愿 项目 显示 是否 单中 php pdo
  • 更新时间 :
  • 英文 :


这样用户就可以有一个愿望列表,在其中添加项目。他们也可以选择是公开的还是私人的。$wishlistisPublic表示1是公共的,0是私有的。我想要的是根据这些条件显示不同的消息。我的代码:

$sql = "SELECT * FROM oopphp_users INNER JOIN oopphp_wishlist ON oopphp_users.userID = oopphp_wishlist.userID_fk WHERE userID = ? ORDER BY itemID_fk ASC";
$stmt = $this->connect()->prepare($sql);
$stmt->bindParam(1, $userID, PDO::PARAM_INT);
$stmt->bindColumn('wishlistIsPublic', $wishlistisPublic, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll();
$itemCount = $stmt->rowCount();
if($wishlistisPublic == 1){
if($itemCount > 0){
echo "<h1 class='w-100'>There are {$itemCount} items on this users wishlist</h1>";
return $results;
} else {
echo "<div class='alert alert-info'>No items in wishlist</div>";
}
} else {
echo "<div class='alert alert-info'>This user has set their wishlist to private.</div>";
}
}

因此,首先,如果它是公共的,并且愿望列表中有0多个项目,那么我会显示它。这适用于

如果愿望清单是私有的,它会说它是私有的。这是有效的。

出现问题的地方是,当我参考$itemCount变量检查是否有超过0个项目时。

如果有多个0,它将显示它们。如果有0,我想说它是空的。但是,如果愿望列表是公共的并且$itemCount是0,则它将不会显示else语句。它说愿望清单是私人的。

所以我从来没有得到这个显示:

else {
echo "<div class='alert alert-info'>No items in wishlist</div>";
}

您不能使用JOIN来显示此信息。

在INNER JOIN的情况下,当没有项目时,将不会有关于愿望列表是公共的还是私有的信息
在LEFT LEFT的情况下,当没有项目时,结果中将出现一个假阳性行。

因此,您必须运行两个查询

$sql = "SELECT wishlistIsPublic FROM oopphp_users WHERE userID = ?";
$stmt = $this->connect->prepare($sql);
$stmt->execute([$userID]);
$wishlistisPublic = $stmt->fetchColumn();
$sql = "SELECT * FROM oopphp_wishlist WHERE userID_fk = ? ORDER BY itemID_fk ASC";
$stmt = $this->connect->prepare($sql);
$stmt->execute([$userID]);
$results = $stmt->fetchAll();

if($wishlistisPublic) {
if($results) {
echo "<h1 class='w-100'>There are {$itemCount} items on this users wishlist</h1>";
foreach ($results as $row) {
// display results
}
} else {
echo "<div class='alert alert-info'>No items in wishlist</div>";
}
} else {
echo "<div class='alert alert-info'>This user has set their wishlist to private.</div>";
}

请注意,您应该永远不要调用connect((超过一次。单个连接必须只进行一次,然后用于执行脚本中的所有查询

最新更新