[英]Postgres - How to fetch escaped data from table
解決方案似乎很簡單,但我發現很難解決。 在表中,樣本數據如下:
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的PDO預准備語句插入了此數據,因此單引號已正確轉義。
他們沒有。
如果他們正確地逃脫了,您將在數據庫“ women's hostels”中找到原始字符串。 但是,當您對數據庫中的數據進行轉義時,這意味着轉義發生了兩次 。
因此,您必須搜尋並刪除插入過程中多余的轉義。
然后選擇通常的數據方式。 是否包含引號都沒有關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.