Php IF语句不起作用
我试图从“posts\u fav”中获取最喜欢的帖子,其中帖子id是行id。然后,如果查询中的用户id等于成员id,它将显示“yes”,否则它将显示“No” 原创:Php IF语句不起作用,php,Php,我试图从“posts\u fav”中获取最喜欢的帖子,其中帖子id是行id。然后,如果查询中的用户id等于成员id,它将显示“yes”,否则它将显示“No” 原创: foreach ($usersfav as $rowfav) { if ($rowfav["user_id"] == $member["id"]) { echo 'yes'; } else { echo 'no'; } } 我的一个尝试是: 这将全
foreach ($usersfav as $rowfav) {
if ($rowfav["user_id"] == $member["id"])
{
echo 'yes';
}
else
{
echo 'no';
}
}
我的一个尝试是:
这将全部更改为else函数。跳过if的检查,因为需要有一种方法可以在不需要
foreach ($usersfav as $rowfav) {
$sqlfav = "SELECT * FROM posts_fav WHERE post_id = '".$row["id"]."'";
$stmfav = $dbh->prepare($sqlfav);
$stmfav->execute();
$usersfav = $stmfav->fetchAll();
if ($rowfav["user_id"] == $member["id"])
{
echo 'yes';
}
else
{
echo 'no';
}
}
更新:
因此,我希望rowfav[user_id]和member[id]匹配的帖子说“是”,其他帖子没有任何行可以说“否”
完整代码:
$sql = "
SELECT *,
(SELECT profilepic FROM users WHERE users.username = users_profiles_comments.author) AS profilepic
FROM users_profiles_comments WHERE postid = '". $row["username"] ."' ORDER BY `id` DESC";
$stm = $dbh->prepare($sql);
$stm->execute();
$users = $stm->fetchAll();
foreach ($users as $row) {
echo ' <div class="row user-row">
<div class="col-xs-3 col-sm-2 col-md-2 col-lg-2">
<img class="img-thumbnail"
src="'.$row['profilepic'].'" width="150px;"
alt="User Pic">
</div>
<div class="col-xs-10 col-sm-10 col-md-10 col-lg-10">
<div class="panel panel-default">
<div class="panel-heading"><b>'. $row["author"] .'</b> - <small>'. $row["date"] .'</small>
';
if ($row["author"]) {
echo '<p style="float:right;">';
$sqlfav = "SELECT * FROM posts_fav WHERE post_id = '".$row["id"]."'";
$stmfav = $dbh->prepare($sqlfav);
$stmfav->execute();
$usersfav = $stmfav->fetchAll();
foreach ($usersfav as $rowfav) {
if (strcmp($rowfav["user_id"], $member["id"]) == 0)
{
echo '
Yes
';
}
else {
echo 'No';
} }
如果我理解正确的话,你想得到一个用户最喜欢的帖子,通过这个,你可以得到这个帖子是否是他的帖子 作为建议,您可以对查询进行检查,这样您的结果就会带有您想要的标志
$sql = "SELECT posts_fav.*, posts.*, IF(posts.user_id = ?, 1, 0) as owns_post FROM posts_fav LEFT JOIN posts ON posts_fav.post_id = posts.id WHERE posts_fav.member_id = ?";
$query = $dbh->prepare($sql);
$query->bind_param("posts_member_id", $member["id"]);
$query->bind_param("member_id", $member["id"]);
$query->execute();
$rows = $query->fetchAll();
foreach($rows as $row) {
if($row["owns_post"]) {
echo "User owns the post";
} else {
echo "User does not own the post";
}
}
未经测试,无法保证其正常工作:- 它只出现在一个帖子上。else函数用于显示帖子上的内容,表中没有任何内容。用我想做的事情更新了我问题的底部。更新了答案。如果SELECT返回空结果,则未设置$rowfaw。现在,每篇文章都显示“否”。即使是第一篇文章,如果$rowfav[user_id]=$member[id]为真,你能用SQL和$usersfav生成部分显示完整代码吗?@PopoFibo 500服务错误。无法工作。@PopoFibo等待抱歉,如果strcmp$rowfav[user\u id],$member[id]是我将其更改为的内容吗?这似乎摆脱了错误。不管怎样,这篇文章本来是。。。“是”现在表示“否”。表中没有行的所有其他帖子什么也不说。@PopoFibo用我想做的事情更新了我问题的底部。否,为使您相等,请检查值是否相等,如果strcmp$rowfav[user_id],$member[id]=”=0@PopoFibo保持不变。在第一篇帖子上用表中的信息回答是,在其他帖子上什么都没有。另外,不。我希望它出现在所有帖子上,无论帖子是否是他/她的。如果帖子id和成员id在posts\u fav[user\u id,post\u id]表中,我希望它显示“是”,如果它不存在,我希望它显示“否”。嗯,那么您将对每个帖子进行查询,以查看用户是否喜欢它?是的,这正是我正在做的。只是一个问题,您是否最终将我的查询更改为posts\u fav.user\u id?我不知道你保存用户id的那一列的名字是什么,但我想是那一列。我刚刚看到了你的完整来源。几点:我看到您在第一个语句中使用$row变量,它来自哪里?同样的变量也将在下一个foreach语句中被覆盖。美元会员来自哪里?这些信息可能有助于解决这个问题。
$sql = "SELECT posts_fav.*, posts.*, IF(posts.user_id = ?, 1, 0) as owns_post FROM posts_fav LEFT JOIN posts ON posts_fav.post_id = posts.id WHERE posts_fav.member_id = ?";
$query = $dbh->prepare($sql);
$query->bind_param("posts_member_id", $member["id"]);
$query->bind_param("member_id", $member["id"]);
$query->execute();
$rows = $query->fetchAll();
foreach($rows as $row) {
if($row["owns_post"]) {
echo "User owns the post";
} else {
echo "User does not own the post";
}
}