喜欢使用PHP、mySQL和PDO进行查询
我想匹配MySQL数据库表中a列中的喜欢使用PHP、mySQL和PDO进行查询,php,mysql,pdo,backslash,apostrophe,Php,Mysql,Pdo,Backslash,Apostrophe,我想匹配MySQL数据库表中a列中的\',因为这些条目的数据没有正确转义 我将PHP与PDO结合使用,以下是相关代码: $stmt = $db->prepare("SELECT * FROM table WHERE title LIKE :title"); $stmt->bindValue(':title',"%\\'%",PDO::PARAM_STR); 问题是,这会将标题与\'以及单个字符匹配。我尝试了各种组合的等,但没有什么真正的工作只是匹配\,而不是单一的' 我做错了什么?
\'
,因为这些条目的数据没有正确转义
我将PHP与PDO结合使用,以下是相关代码:
$stmt = $db->prepare("SELECT * FROM table WHERE title LIKE :title");
$stmt->bindValue(':title',"%\\'%",PDO::PARAM_STR);
问题是,这会将标题与\'
以及单个字符匹配。我尝试了各种组合的
等,但没有什么真正的工作只是匹配\
,而不是单一的'
我做错了什么?事实证明,您实际上需要这样做:
$stmt->bindValue(':title',"%\\\\\\'%",PDO::PARAM_STR);
这是6个反斜杠和一个撇号,然后匹配一个反斜杠和一个撇号。有人对此有解释吗
PS:我不知道为什么仅仅添加反斜杠之前不起作用,我试过了,好像我有双引号什么的。事实证明,你实际上需要这样做:
$stmt->bindValue(':title',"%\\\\\\'%",PDO::PARAM_STR);
这是6个反斜杠和一个撇号,然后匹配一个反斜杠和一个撇号。有人对此有解释吗
PS:我不知道为什么仅仅添加反斜杠之前不起作用,我试过了,好像我有双引号之类的东西。。。。或者只将其包装成单引号(而不是双引号)。事实上,当查询传递到数据库时,它将有助于查看查询的外观。raina77ow:
$stmt->bindValue(“:title”,“%\\\\'”,PDO::PARAM\u STR)代码>也匹配\'和'。马特:据我所知,无法查看从PDO生成的原始查询,或者是吗?@tholu,取消注释/将log
添加到您的my.ini
中,然后重新启动mysqld
。现在您将看到mysql/data/HOST\u NAME.log
查询中的所有查询都是这样的(用单引号括起来):SELECT*FROM table WHERE title like“%\\\\\'”
-但是,它也会选择带有\'
和'
的标题。。。。或者只将其包装成单引号(而不是双引号)。事实上,当查询传递到数据库时,它将有助于查看查询的外观。raina77ow:$stmt->bindValue(“:title”,“%\\\\'”,PDO::PARAM\u STR)代码>也匹配\'和'。马特:据我所知,无法查看从PDO生成的原始查询,或者是吗?@tholu,取消注释/将log
添加到您的my.ini
中,然后重新启动mysqld
。现在您将看到mysql/data/HOST\u NAME.log
查询中的所有查询都是这样的(用单引号括起来):SELECT*FROM table WHERE title like“%\\\\\\'”
-但是,它也会选择带有\'
和'
的标题。