You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中MySQL代码导致网站崩溃的问题求助

问题分析与解决
  • 直接崩溃原因:字符串引号语法冲突
    你的代码里,SQL语句用双引号包裹,但$_SESSION["email"]中的双引号和外层双引号发生冲突,PHP无法正确解析该字符串,直接触发语法错误导致网站崩溃。
    错误代码:

    $sqlcode2 = $polaczenie->query("UPDATE `uzytkownicy` SET `password` = '$haslo' WHERE `email` = '$_SESSION["email"]';");
    

    修复语法错误的两种可行方式:

    1. 将$_SESSION["email"]的双引号改为单引号:
      $sqlcode2 = $polaczenie->query("UPDATE `uzytkownicy` SET `password` = '$haslo' WHERE `email` = '$_SESSION['email']';");
      
    2. 使用字符串连接符拼接变量:
      $sqlcode2 = $polaczenie->query("UPDATE `uzytkownicy` SET `password` = '$haslo' WHERE `email` = '" . $_SESSION["email"] . "';");
      
  • 核心安全隐患:SQL注入风险
    即便修复了语法错误,直接将会话变量拼入SQL语句仍存在严重的SQL注入漏洞,可能导致数据库被篡改、敏感数据泄露等问题。正确的做法是使用预处理语句:

    $stmt = $polaczenie->prepare("UPDATE `uzytkownicy` SET `password` = ? WHERE `email` = ?");
    $stmt->bind_param("ss", $haslo, $_SESSION["email"]);
    $stmt->execute();
    $affectedRows = $stmt->affected_rows; // 可通过受影响行数判断更新是否成功
    $stmt->close();
    

内容的提问来源于stack exchange,提问作者user19746546

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:40:38