解决方案似乎很简单,但我发现很难解决。在表中,示例数据如下:
id | name | created_time
-------+----------------------------------+----------------------------
41477 | women''s hostels | 2016-03-24 13:52:52.855116
41476 | women''s hostels | 2016-03-24 13:52:49.895482
41475 | women''s hostels | 2016-03-24 13:52:49.735788
41471 | men''s hostel | 2016-03-24 13:52:42.907983
41469 | women''s clothing shops | 2016-03-24 13:52:30.666364
我已使用PHP的PDO预处理语句插入此数据,因此单引号已正确转义。
现在我想获取名称与
完全匹配的记录女性的宿舍
我希望使用原始SQL查询和PDO以两种方式完成此任务。我正在尝试关注这两种情况,但没有得到任何结果:
原始SQL:
SELECT id FROM <TABLE> where name = 'women''s hostels';
SELECT id FROM <TABLE> where name ilike 'women''s hostels';
SELECT id FROM <TABLE> where name::text = 'women''s hostels';
PDO:
$data = "women''s hostels";
$sql = "SELECT id FROM <TABLE> where name=?"; (tried all variations as above)
$stmt->execute(array($data));
$rows = $stmt->fetchAll();
名称字段在表格中定义如下:
Column | Type |
name | character varying(255) |
请帮忙。如果还有其他需要,请告诉我。任何帮助将不胜感激。
答案 0 :(得分:2)
首先,数据库中不应存在转义数据。
我已使用PHP的PDO预处理语句插入此数据,因此单引号已正确转义。
他们一直没有。
如果他们正确逃脱,你就会在数据库中拥有原始字符串,并且#34;女性的宿舍&#34;。但是,当您在数据库中转储数据时,这意味着转发发生两次。
因此,您必须在插入期间追捕并删除多余的转义。
然后选择通常的数据。无论你是否有引号都没有区别。