【问题标题】:Postgres - How to fetch escaped data from tablePostgres - 如何从表中获取转义数据
【发布时间】:2016-07-12 23:33:46
【问题描述】:

解决方案似乎很简单,但我发现很难解决。表中样本数据如下:

 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)      |  

请帮忙。让我知道是否需要其他任何东西。任何帮助将不胜感激。

【问题讨论】:

    标签: php sql database postgresql pdo


    【解决方案1】:

    数据库中首先应该没有转义的数据。

    我已使用 PHP 的 PDO 准备语句插入了这些数据,因此单引号已正确转义。

    他们不是。

    如果他们正确转义,您将在数据库中获得原始字符串“女性旅馆”。但是当您将数据库中的数据转义时,这意味着转义发生了 两次

    因此,您必须在插入期间寻找并删除多余的转义。

    然后选择任何通常的数据方式。无论您是否在其中引用引号都没有区别。

    【讨论】:

    • 感谢@Your常识!我明白我做错了。
    猜你喜欢
    • 2020-09-16
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多