2

我有一张带有单位的桌子:

insert into table unit ('id', 'name') values ('1', 'mg'), 
('2', 'km'), ('3', '%'), ('4', '%.'), ('5', 'mg/100%'), ('6', 'km/h'); 

现在我想找到所有名称中有 % 的单位(这里:%、%. 和 mg/100%):

select * from unit where name like  '%\%%'; 

从控制台或 phpmyadmin 可以正常工作,但是当我尝试使用 PDO 时

$st = $db->prepare('select * from unit where name like :n'); 
$st->execute(array('n'=>'%mg%')); 

可以,但是

$st->execute(array('n'=>'%\%%')); 

不给我结果...

如何在 PDO 准备/执行中转义 % 字符?

4

1 回答 1

0

只需在查询中添加一个ESCAPE子句:

WHERE name LIKE :n ESCAPE '\';

当然,在 PHP 中,您必须转义反斜杠:

$stmt = $pdo->prepare('... WHERE name LIKE :n ESCAPE \'\\\';');
于 2013-02-02T09:49:44.560 回答