Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Json и Zend Framework - Database
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Json и Zend Framework - Database

Страниц (1): [1]
 

1. Viper - 29 Марта, 2013 - 23:56:29 - перейти к сообщению
Возникла проблема идиотского характера(клятый зенд)... Есть такой код

PHP:
скопировать код в буфер обмена
  1. $db = Zend_Registry::get('db');
  2. $params = json_encode(array(
  3.         'sitename'=>getRequest('sitename', 'Тестовый сайт', 'string')
  4. ));
  5.  
  6. // Сохраняем в БД
  7. $db->exec("INSERT INTO `sites` (params) VALUES('".$params."');


В результате в бд получаю json-строку совершенно без экранирования. 'Тестовый сайт', сами понимаете, превращается в 'u0422u0435u0441u' ...

Как это можно исправить?
2. Мелкий - 30 Марта, 2013 - 09:35:18 - перейти к сообщению
Может, экранировать?
Почему вообще используется зенд, а параметризованные запросы - нет?
3. Viper - 30 Марта, 2013 - 10:12:32 - перейти к сообщению
Мелкий пишет:
Может, экранировать?
Почему вообще используется зенд, а параметризованные запросы - нет?


Пробовал. Результат тот же.
В смысле?

PS! Я в Зенде не очень разбираюсь.
4. Мелкий - 30 Марта, 2013 - 10:38:21 - перейти к сообщению
А я зенд вообще не видел, но инструменты безопасного исполнения запросов содержат все фреймворки, иначе это и не фреймворк ни разу. При использовании фреймворка прямая конкатенация запроса и значений - явный признак, что что-то идёт сильно не так.
5. Viper - 30 Марта, 2013 - 11:34:27 - перейти к сообщению
Мелкий пишет:
При использовании фреймворка прямая конкатенация запроса и значений - явный признак, что что-то идёт сильно не так.
Что может идти не так если это то же самое что и обычный запрос на insert. Все уже заэкранированно до передачи адаптеру. Так вот в результате какого-то... этот адаптер убирает все экранирования...
6. DeepVarvar - 30 Марта, 2013 - 12:45:01 - перейти к сообщению
Viper, в зенде гораздо больший уровень абстракции, чем может показаться.
7. Viper - 30 Марта, 2013 - 14:23:35 - перейти к сообщению
DeepVarvar собственно попробовал использовать этот класс для обновления данных и результат тот же самый.
8. DeepVarvar - 30 Марта, 2013 - 15:00:56 - перейти к сообщению
А сам запрос пробовали выводить? Что там зенд нагенерил?
(Добавление)
И было бы верным лицезреть кусок вашего кода.
9. Мелкий - 30 Марта, 2013 - 15:18:47 - перейти к сообщению
Viper пишет:
Все уже заэкранированно до передачи адаптеру.

Viper пишет:
$db->exec("INSERT INTO `sites` (params) VALUES('".$params."');

Где? Ничего тут не экранируется. И адаптер, разумеется, тоже не может знать, что надо ему экранировать - иначе этот код с руками бы оторвали в парсер запросов самого сервера СУБД.

 

Powered by ExBB FM 1.0 RC1