Php IF语句不起作用

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'; } } 我的一个尝试是: 这将全

我试图从“posts\u fav”中获取最喜欢的帖子,其中帖子id是行id。然后,如果查询中的用户id等于成员id,它将显示“yes”,否则它将显示“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";
    }
}