一旦满足要求,我的代码两次回声Hey
或Hello
。
这应该检查一个人是否上传了某些东西,这取决于他们是否显示消息。
$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";
}
}
}
}
我希望输出回显任何一个单词一次,但实际输出却回显两次。
答案 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";
}