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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Json и Zend Framework - Database

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Сохранение в БД через адаптер
Viper
Отправлено: 29 Марта, 2013 - 23:56:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Возникла проблема идиотского характера(клятый зенд)... Есть такой код

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' ...

Как это можно исправить?

(Отредактировано автором: 30 Марта, 2013 - 00:00:29)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Мелкий Супермодератор
Отправлено: 30 Марта, 2013 - 09:35:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Может, экранировать?
Почему вообще используется зенд, а параметризованные запросы - нет?


-----
PostgreSQL DBA
 
 Top
Viper
Отправлено: 30 Марта, 2013 - 10:12:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Мелкий пишет:
Может, экранировать?
Почему вообще используется зенд, а параметризованные запросы - нет?


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

PS! Я в Зенде не очень разбираюсь.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Мелкий Супермодератор
Отправлено: 30 Марта, 2013 - 10:38:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А я зенд вообще не видел, но инструменты безопасного исполнения запросов содержат все фреймворки, иначе это и не фреймворк ни разу. При использовании фреймворка прямая конкатенация запроса и значений - явный признак, что что-то идёт сильно не так.


-----
PostgreSQL DBA
 
 Top
Viper
Отправлено: 30 Марта, 2013 - 11:34:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Мелкий пишет:
При использовании фреймворка прямая конкатенация запроса и значений - явный признак, что что-то идёт сильно не так.
Что может идти не так если это то же самое что и обычный запрос на insert. Все уже заэкранированно до передачи адаптеру. Так вот в результате какого-то... этот адаптер убирает все экранирования...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Марта, 2013 - 12:45:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Viper, в зенде гораздо больший уровень абстракции, чем может показаться.
 
 Top
Viper
Отправлено: 30 Марта, 2013 - 14:23:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




DeepVarvar собственно попробовал использовать этот класс для обновления данных и результат тот же самый.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Марта, 2013 - 15:00:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А сам запрос пробовали выводить? Что там зенд нагенерил?
(Добавление)
И было бы верным лицезреть кусок вашего кода.
 
 Top
Мелкий Супермодератор
Отправлено: 30 Марта, 2013 - 15:18:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Viper пишет:
Все уже заэкранированно до передачи адаптеру.

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

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


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB