如何使我的代码仅回显一次而不是两次?

时间:2019-07-31 23:02:15

标签: php mysql

一旦满足要求,我的代码两次回声HeyHello

这应该检查一个人是否上传了某些东西,这取决于他们是否显示消息。

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        $sqlImg = "SELECT * FROM users WHERE idUsers='$current'";
        $resultImg = mysqli_query($conn, $sqlImg);
        while ($rowImg = mysqli_fetch_assoc($resultImg)) {
            if ($rowImg['profile_img'] == 0) {
                echo "hey";
            } else {
                echo "Hello";
            }
        }
    }
}

我希望输出回显任何一个单词一次,但实际输出却回显两次。

1 个答案:

答案 0 :(得分:2)

您不需要两个循环。表中的每个用户都在运行外部循环,无论它们是否与$current相匹配。对于每个用户,您都在执行另一个查询,该查询仅获得$current用户,并回显其状态。

如果idUsers是唯一键,则您甚至不需要任何循环。只需执行一个查询并获取行即可。

您还应该使用准备好的语句来防止SQL注入。

$stmt = $conn->prepare("SELECT profile_img FROM users WHERE idUsers = ?");
$stmt->bind_param("s", $current);
$stmt->execute();
$result = $stmt->get_result();
$rowImg = $result->fetch_assoc();
if ($rowImg['profile_img'] == 0) {
    echo "hey";
} else {
    echo "Hello";
}