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

运行PDO编写的登录表单代码出现语法错误请求帮忙排查

错误1:触发line13报错的直接原因

execute()方法传入的数组中,username数组项末尾缺少逗号,PHP解析器无法识别后续的password数组项,抛出意外字符语法错误:

// 错误写法
array(
    'username' => $_POST["username"]
    'password' => $_POST["password"]
)
// 修正写法
array(
    'username' => $_POST["username"],
    'password' => $_POST["password"]
)

其他语法类错误

  • PDO实例变量名不一致:你将PDO实例赋值给了$connection,后续调用setAttribute()、prepare()时用的是未定义的$connect,统一变量名即可
  • 缺少$password变量定义:实例化PDO时传入了$password参数,但代码开头没有定义该变量,若你本地root用户无密码,新增$password = "";即可
  • PDO属性常量写错:setAttribute()第一个参数应为PDO::ATTR_ERRMODE,你写成了PDO::ERRMODE
  • 多处语句末尾缺分号:密码错误提示的赋值语句、catch块里的错误信息赋值语句末尾都没有写分号,会触发语法错误
  • label标签闭合错误:字段必填提示的</label'&gt;写法错误,改为</label>&gt;
  • header语法错误:跳转语句写法应为header("Location: welcome.php");,你把location:写在了引号外

逻辑不匹配错误

  • 表单字段名和PHP接收名不对应:HTML表单里用户名的name是user、密码的name是pass、提交按钮的name是submit,但PHP里判断的是isset($_POST["login"]),取值用的是$_POST["username"]、$_POST["password"],完全对应不上,提交后无法正常接收参数
  • 错误提示变量不匹配:HTML里输出错误用的是$error,但PHP里错误信息存在$message变量里,会导致错误提示不显示
  • 缺少form闭合标签:HTML里的form标签只有开头没有</form>闭合

安全类隐患

  • 密码明文存储验证:直接拿用户输入的密码和数据库明文比对风险极高,正式项目请用password_hash()对密码哈希后存库,验证时用password_verify()比对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:45:01