2016-03-25 3 views
1

Решение кажется простым, но мне трудно обойтись. В таблице, данные выборки как:Postgres - Как получить экранированные данные из таблицы

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

Пожалуйста, помогите. Дайте мне знать, если что-то еще понадобится. Любая помощь будет оценена по достоинству.

ответ

2

В первую очередь в базе данных не должно храниться никаких данных.

Я вставил эти данные с помощью подготовленных инструкций PHP PDO, чтобы одинарные кавычки были экранированы должным образом.

Их не было.

Если бы они сбежали должным образом, у вас была бы оригинальная строка в базе данных «женские общежития». Но по мере того, как вы удаляете свои данные в базе данных, это означает, что сбежание произошло дважды.

Таким образом, вам необходимо выследить и удалить лишнее экранирование во время вставить.

Затем выберите любые данные обычным способом. Не имеет значения, имеете ли вы в нем цитаты или нет.

+0

Спасибо @ Ваш общий смысл! Я понял то, что я делал. – vsingh

Смежные вопросы