Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
喜欢使用PHP、mySQL和PDO进行查询_Php_Mysql_Pdo_Backslash_Apostrophe - Fatal编程技术网

喜欢使用PHP、mySQL和PDO进行查询

喜欢使用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); 问题是,这会将标题与\'以及单个字符匹配。我尝试了各种组合的等,但没有什么真正的工作只是匹配\,而不是单一的' 我做错了什么?

我想匹配MySQL数据库表中a列中的
\'
,因为这些条目的数据没有正确转义

我将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“%\\\\\\'”
-但是,它也会选择带有
\'
'
的标题。