【问题标题】:PDO / MySQL: Underscore ('_') wildcard in PHP seems escaped by defaultPDO / MySQL:PHP 中的下划线 ('_') 通配符似乎默认转义
【发布时间】:2018-10-28 16:11:53
【问题描述】:

在我的 MSQL 表中,一行的 code 列为“1001000181026”。

我的 PHP 脚本只对粗体部分 (1810) 感兴趣,而我对 code 的其他字符使用下划线通配符 (_)。

但是:它不适用于 PDO(0 个结果)!另一方面,如果我将SELECT 代码手动写入 phpMyAdmin,它运行良好(1 个结果)。

这是 PDO/PHP 代码(工作):

$code = '_______1810__'; 
$preparequery = 'SELECT * FROM table WHERE code LIKE :code';
$stmt = $conn->prepare($preparequery);
$stmt->bindValue("code", $code);
$y = $stmt->rowCount();

echo '<p>We have '.$y.' row(s).</p>'; // We have 0 row(s).

phpMyAdmin 中的查询工作正常:

SELECT * FROM `table` WHERE code LIKE '_______1810__'

正如预期的那样,这给了我 1 个结果。

PHP 代码 (PDO) 可能有什么问题?感谢您的帮助!

【问题讨论】:

  • 我不确定它是否与那里提到的内容有关:stackoverflow.com/questions/5809951/… 根据哪个 PDO 占位符(例如“:代码”)允许“字母数字 + 下划线" 个字符。

标签: php mysql pdo escaping wildcard


【解决方案1】:

您可以将查询更改为:

SELECT * FROM table WHERE code LIKE CONCAT('_______', :code, '__')

这样您就不必担心占位符是如何工作的。 PHP 方面也会稍微简化一些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2021-10-01
    相关资源
    最近更新 更多