PHP中使用fetch对象时,无法使用while循环生效
P粉803444331
P粉803444331 2023-08-16 11:49:58
0
1
432

我正在为管理员制作一个登录页面,但是php代码中的while循环不起作用。我将在这里留下代码(对于代码中的西班牙语我很抱歉)

// 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接 if (!$conn) { echo "连接服务器时发生错误。"; } $username = $_POST["username"]; if ($username != "") { $password = $_POST["password"]; $accountLevel = $_POST["accountLevel"]; $content = $_POST["content"]; $sql = "SELECT password, accountLevel FROM `accounts1` WHERE username='".$username."'"; $result = mysqli_query($conn, $sql); while ($post = $result->fetch_object()) { if ($post->password != $password) { echo "密码错误"; }else if ($post->accountLevel != $accountLevel) { echo "错误:无法发布。账户级别错误。"; }else{ $sql = "INSERT INTO `blogposts`(`title`, `contentHTML`, `publishDate`, `commentSection`, `likes`, `dislikes`, `publisher`, `selector`) VALUES ('','".$_POST['content']."','".$_POST['publishDate']."','',0,0,'".$_POST['username']."','')"; /*$fetchObj = mysqli_fetch_object($QueryResult); var_dump($fetchObj);*/ echo "已发送"; } } }else{ echo "未指定用户"; }
  • 有没有办法用更简单的赋值方式替换while循环(因为它是一个登录页面,只检查一个帐户)

  • 为什么while循环不起作用?我之前在另一个页面使用过相同的代码,它完全正常工作,而且我没有看到任何逻辑错误。

这是一个从带有函数的脚本发送的请求,并且我使用请求到Php页面。之后它会读取echo并在屏幕上显示。(只是为了防止有人需要这些信息)

P粉803444331
P粉803444331

全部回复 (1)
P粉200138510

而不是使用while循环,只需一次捕获fetch_object(),并使用if测试是否得到真值结果。

您还应该使用预处理语句,我在下面展示了如何做。

您不应该存储明文密码,应该使用password_hash()password_verify()。我没有在下面显示该代码(它将需要对您的注册脚本进行相应更改)。

$username = $_POST["username"]; if ($username != "") { $password = $_POST["password"]; $accountLevel = $_POST["accountLevel"]; $content = $_POST["content"]; $sql = "SELECT password, accountLevel FROM `accounts1` WHERE username=?"; $stmt = $conn->prepare($sql); $stmt->bind_param("s", $username); $stmt->execute(); $result = $stmt->get_result(); $post = $result->fetch_object(); if ($post) { if ($post->password != $password) { echo "Usuario o Contraseña incorrecta"; }else if ($post->accountLevel != $accountLevel) { echo "Error: No se pudo Publicar. Error de nivel de cuenta."; }else{ $sql = "INSERT INTO `blogposts`(`title`, `contentHTML`, `publishDate`, `commentSection`, `likes`, `dislikes`, `publisher`, `selector`) VALUES ('',?,?,'',0,0,?,'')"; $stmt = $conn->prepare($sql); $stmt->bind_param("sss", $content, $_POST['publishDate'], $username); $stmt->execute(); echo "Enviado"; } } else { echo "Usuario o Contraseña incorrecta"; } }else{ echo "Usuario no indicado"; }
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!