Специальные символы Php / SQL / DB2 в предложении where - PullRequest
0 голосов
/ 19 октября 2011

Я пытаюсь выполнить SQL-запрос к базе данных DB2 (на iSeries), используя PHP и «DB2_exec», а не mysql.

У меня есть эти символы в моем предложении WHERE (переменная $EncSSN), которые вызываютSQL-оператор для остановки: ðIn*Éæng «" Ò × ÑRÈ • `

SQL построен как:

select EENUM, EESSN 
from EEMAST 
where EESSN = '$EncSSN'

Поле в таблице EESSN содержит зашифрованные значения. - Я получаюбез ошибок и без записей в журнале. HTML отображает пустую страницу. - Я пытался заменить (str_replace) кавычки, одинарные кавычки, точку и т. д. с помощью escape-символа '\' - я не могу использовать mysql_real_escape_string, потому что загружаю ресурс db2_connect.

Если я изменю приведенный выше оператор SQL where, чтобы выбрать значение из другого поля, мой HTML будет отображен правильно.

Можете ли вы представить, как я могу это сделать?

Стивен

Ответы [ 2 ]

2 голосов
/ 19 октября 2011

Подготовьте SQL и установите параметр для предложения where с использованием подхода массива. Никогда не пытайтесь строить запросы SQL с помощью строковых функций.

0 голосов
/ 19 октября 2011

попробуйте функцию addslashes() http://php.net/manual/en/function.addslashes.php

или heredoc или nowdoc синтаксис http://php.net/manual/en/language.types.string.php

Вы также можете поместить sql в хранимый процесс, но у вас могут быть те же проблемы со значением параметра, и вам нужно попробовать один из вышеперечисленных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...