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 \'\\\';');