2010-05-19 4 views
0

У меня есть запрос на обновление доктрины, чтобы сохранить мои данные:Update доктрины DQL + поле с скобкой: "(" и ")"

$ клиента = Doctrine_Query :: Create()

- > обновление ('Клиент')

-> набор ('факс', " '" $ this-> GetRequest() -.> GetParam ('факс'). "'")

-> где ('id ='. $ this-> getRequest() -> getParam ('id'))

-> выполнить();

Проблема заключается в том, что полевой факс имеет скобки, а доктрина возвращает ошибку в запросе из-за этих скобок "(" и ")".

Кто-нибудь знает решение для этого? Thank's

ответ

7
$customer = Doctrine_Query::create() 
    ->update('Customer') 
    ->set('fax', '?', $this->getRequest()->getParam('fax')) 
    ->where('id = ?', $this->getRequest()->getParam('id')) 
    ->execute(); 
+0

Это. Всегда использовать "?" (или другой метод привязки), чтобы использовать преимущества экранирования PDO. –

+0

это сработало ... спасибо! – Paulo

+0

¡Muchas gracias! – chepe263

0

Не знаком с Доктриной, но что, если вы избежите скобки?

$fax = $this->getRequest()->getParam('fax'); 
$fax = str_replace(array('(',')'), array('\(','\)'), $fax); 

// ... 
->set('fax',"'". $fax ."'");

Edit, и он также может быть хорошим, чтобы дезинфицировать вход включать только цифры, скобки и, возможно, выскакивает:

// replace everything not 0-9, (,) or - with nothing 
$fax = preg_replace('/[^0-9\(\)\-]/','',$fax);
+0

Благодаря комментарием. я мог бы сделать что-то подобное, но я бы хотел решить это без этого, с некоторым решением в доктрине. Первый ответ сработал ... – Paulo

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