我有一个单位表:
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准备/执行中转义%字符?
答案 0 :(得分:0)
只需在查询中添加ESCAPE
子句:
WHERE name LIKE :n ESCAPE '\';
在PHP中,你当然必须逃避反斜杠:
$stmt = $pdo->prepare('... WHERE name LIKE :n ESCAPE \'\\\';');