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

Php 使用PDO在mysql表中搜索字符%,php,mysql,pdo,Php,Mysql,Pdo,我有一张有单位的桌子: insert into table unit ('id', 'name') values ('1', 'mg'), ('2', 'km'), ('3', '%'), ('4', '%.'), ('5', 'mg/100%'), ('6', 'km/h'); 现在,我想查找名称中包含%的所有单位(此处:%、%和mg/100%): 在控制台或phpmyadmin上运行良好,但当我尝试使用PDO时 $st = $db->prepare('select * from

我有一张有单位的桌子:

insert into table unit ('id', 'name') values ('1', 'mg'), 
('2', 'km'), ('3', '%'), ('4', '%.'), ('5', 'mg/100%'), ('6', 'km/h'); 
现在,我想查找名称中包含%的所有单位(此处:%、%和mg/100%):

在控制台或phpmyadmin上运行良好,但当我尝试使用PDO时

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

$st->execute(array('n'=>'%\%%')); 
给我没有结果


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

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

WHERE name LIKE :n ESCAPE '\';
在PHP中,您必须避开反斜杠,当然:

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