2009-11-29 5 views
0

Я использую Doctrine ORM для php и Zend MVC. У меня есть база данных mysql. Когда я вставляю в базу данных, она ускользает от кавычек. Другими словами, когда я ввожуDoctrine quoting apostrophes

<input name="customer_name" value="Test'ed user"> ... 

в мою форму и присваивать объект доктрины и сохранять.

Когда я смотрю на базу данных через тузд командную строку я получаю

Test\'ed user 

Есть ли способ отключить это или я должен позвонить stripslashes() по каждой переменной?

ответ

2

Проверка на наличие magic_quotes_gpc, либо просмотр php.ini, либо запуск get_magic_quotes_gpc().

Если у вас есть доступ к php.ini, выключите его. В противном случае вам нужно будет удалить косые черты в ваших сценариях, используя stripslashes().

+0

Так просто. Не использовали сервер с включенным так долго, что я забыл об этом! THANKS –

1

Вы можете избежать magic_quotes_gpc чумы в целом, добавляя что-то вроде этого в верхней части страницы:

if(get_magic_quotes_gpc()) { 
    if(!function_exists('stripishlashes_all')) { 
     function stripslashes_all(&$data) { 
      foreach($data as &$_value) { 
       if(is_array($_value)) { 
        stripslashes_all($_value); 
       } 
       else { 
        $_value = stripslashes($_value); 
       } 
      } 
     } 
    } 
    stripslashes_all($_REQUEST); 
} 

Очень полезно, когда код выполняется на сервере вы не имеете полный контроль над, или если вы планируете его распространять.

+1

Будьте осторожны, это не сработает, если $ _REQUEST содержит массивы! –

+0

Хороший вопрос, Бен. Я обновил код, чтобы исправить это. – Atli

+0

Красивый трюк. Благодарю. –

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