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

PHP中MySQL PDO的WHERE子句失效问题求助

PHP中PDO查询WHERE子句失效问题排查与解决

问题描述

我在PHP中用PDO执行简单SQL查询时,WHERE子句无法正常生效。移除WHERE条件能获取所有结果,直接在数据库SQL编辑器中执行相同查询却能得到正确结果,请问问题出在哪里?

相关代码与信息

PHP代码

$dbConnection = new PDO('mysql:dbname=XYZ;host=XYZ;', 'XYZ', 'XYZ');
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    
$statement = $dbConnection->prepare("
    SELECT produktId, datum_gebucht 
    FROM tric.lager_umbuchungen 
    WHERE datum_gebucht LIKE '2025-02-25 - 10:40:29'
");
    
$statement->execute();
    
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
print_r($result);

表结构

produktid bigint(20)
datum_gebucht varchar(50)

数据示例

produktId      datum_gebucht
5901341895      2025-02-25 - 10:40:29

数据库编辑器执行的查询语句

SELECT produktId, datum_gebucht 
FROM lager_umbuchungen 
WHERE datum_gebucht LIKE '2025-02-25 - 10:40:29'

PHP输出结果

Array ( )

可能的原因及解决方法

  • 精确匹配用=替代LIKE:LIKE多用于模糊匹配(需配合%通配符),精确匹配场景下使用=更可靠,避免字符校对规则导致的匹配异常。修改后的SQL:

    $statement = $dbConnection->prepare("
        SELECT produktId, datum_gebucht 
        FROM tric.lager_umbuchungen 
        WHERE datum_gebucht = '2025-02-25 - 10:40:29'
    ");
    
  • 处理隐藏空白字符:datum_gebucht是varchar类型,可能存在肉眼不可见的空格、换行符。可以用TRIM()函数去除两端空白后再匹配:

    SELECT produktId, datum_gebucht 
    FROM tric.lager_umbuchungen 
    WHERE TRIM(datum_gebucht) = '2025-02-25 - 10:40:29'
    
  • 使用参数绑定:参数绑定能避免字符串转义、编码问题,同时提升安全性。修改后的代码:

    $targetDate = '2025-02-25 - 10:40:29';
    $statement = $dbConnection->prepare("
        SELECT produktId, datum_gebucht 
        FROM tric.lager_umbuchungen 
        WHERE datum_gebucht = :targetDate
    ");
    $statement->bindParam(':targetDate', $targetDate);
    $statement->execute();
    
  • 统一数据库字符集:在PDO连接的DSN中指定字符集(如utf8mb4),确保PHP与数据库的编码一致,避免编码差异导致字符串比较失败:

    $dbConnection = new PDO('mysql:dbname=XYZ;host=XYZ;charset=utf8mb4', 'XYZ', 'XYZ');
    

内容的提问来源于stack exchange,提问作者Levin Janßen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:43:13