使用PDO在mysql表中搜索字符%

时间:2013-02-02 09:46:33

标签: php mysql pdo

我有一个单位表:

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准备/执行中转义%字符?

1 个答案:

答案 0 :(得分:0)

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

WHERE name LIKE :n ESCAPE '\';

在PHP中,你当然必须逃避反斜杠:

$stmt = $pdo->prepare('... WHERE name LIKE :n ESCAPE \'\\\';');