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

执行表单对应PHP代码出现SQL报错:Unknown column '5PM' in 'where clause' 原因咨询

问题原因解析

这个报错的根源很明确——你写的SQL语句里,字符串类型的字段值没有用引号包裹,具体拆解如下:

  • 你执行的SQL是:SELECT bookedseat from bookings where sdate=2018-04-26 and stime=5PM
  • 在SQL语法里,像5PM(时间字符串)、2018-04-26(日期字符串)这类非数值型的取值,必须用单引号(')或者双引号括起来。如果不这么做,数据库会把这些值当成列名来解析,而不是你要匹配的字段值。
  • 这里数据库看到stime=5PM时,会误以为5PM是bookings表的一个列,但你的表根本没有这个列,所以就抛出了Unknown column '5PM' in 'where clause'的错误。顺带提一句,sdate=2018-04-26其实也有问题,数据库会把它当成数值计算(2018减4减26),而不是日期字符串,这也会导致查询结果完全不符合预期。
快速修正方案

把SQL里的字符串/日期值用单引号包裹,修正后的SQL应该是这样:

SELECT bookedseat from bookings where sdate='2018-04-26' and stime='5PM'
更安全的写法(推荐)

如果你是用PHP拼接这个SQL语句,强烈建议使用预处理语句(PDO或mysqli都支持),不仅能避免这类语法错误,还能彻底防止SQL注入攻击。举个PDO的例子:

// 假设你已经建立了PDO数据库连接,存在$pdo变量中
$stmt = $pdo->prepare("SELECT bookedseat FROM bookings WHERE sdate = ? AND stime = ?");
// 绑定参数并执行查询
$stmt->execute(['2018-04-26', '5PM']);
// 获取结果
$bookedSeats = $stmt->fetchAll(PDO::FETCH_ASSOC);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:26:51