ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP不断加载相同的内容

2019-11-10 17:14:43  阅读:266  来源: 互联网

标签:mysqli infinite-loop sql mysql php


如何防止它再次重新加载同一表行并且永不停止?我的头无法承受……我知道我以某种方式创建了一个无限循环,所以我在互联网上进行搜索,我看到人们在做几乎相同的事情,但是以某种方式对他们有用.
    

include_once "additional_code/dbh.inc.php";

session_start();

$savedUsername = $_SESSION["username"];

if (!isset($savedUsername) || empty($savedUsername)) {
    header("location: login.php");
    exit;
}

$sql = "SELECT * FROM messages WHERE sender = $savedUsername";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

if ($row > 0) {
    echo "it works";

    while($row) {
        echo htmlspecialchars($row["sender"] . ": " . $row["msg"]);
        echo "<br><br>";
    }
}
else {
    echo "It doesn't work";
}

?>

解决方法:

使用时

while($row) {

您实际上正在创建一个无限循环.因为$row是一个定义的变量,所以它是一个实际值-这使得它本质上成为

while (true) {

相反,您要获取的是每一行,这意味着您必须提供mysqli_fetch_assoc()作为while的参数.您还希望改为检查行数,因为现在正在获取第一行(在循环中不可见).

if (mysqli_num_rows($result)> 0) {
    echo "it works";

    while($row = mysqli_fetch_assoc($result)) {
        echo htmlspecialchars($row["sender"] . ": " . $row["msg"]);
        echo "<br><br>";
    }
}
else {
    echo "It doesn't work";
}

您还应该意识到,您的代码容易受到SQL注入攻击的侵害,并且您应将预处理的语句与MySQLi一起使用并绑定值,而不是将变量直接注入查询中.

> How can I prevent SQL injection in PHP?

标签:mysqli,infinite-loop,sql,mysql,php
来源: https://codeday.me/bug/20191110/2014049.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有