2012-01-04 3 views
0

Я пишу редактор кода с помощью CodeMirror. Я собираюсь сохранить Javascripts в базе данных mySQL. Потому что Javascript использует символ ' совсем немного, мне пришлось использовать mysqli->real_escape_string() на текстовом поле .PHP mysqli: escape strings save strange

Когда я извлекаю источник из таблицы скриптов, он по-прежнему имеет экранированные символы.

Так что, если бы я был вставить это:

this.update('something'); 

Вы бы

this.update(\'something\'); 

Есть ли какой-нибудь способ, чтобы обратить вспять процесс?

+1

Убедитесь, что вход не предварительно экранирована перед 'real_escape_string()' , Из-за * magic quotes * или '* slashes()' например. –

+0

Я не знаком с CodeMirror, но его возможно избежать экранов «'» перед отправкой. Таким образом, это может быть не ошибка mysqli-> real_escape_string(). – Sinan

ответ

0

Вы всегда можете попробовать, используя stripslashes().

Странно, хотя ваш real_escape_string работает неправильно. Он не должен оставлять косые черты. Возможно, ваш хост включил magic_quotes_runtime. Вы можете отключить его с помощью set_magic_quotes_runtime(0).

Возможно, вы удвоились, используя mysql_real_escape_string и addslashes?

Лучшая практика состоит в том, чтобы изменить код для использования переменных привязки, а не использовать экранирование строки.

Пример:

$query = $mysqli->prepare("UPDATE tablename SET favorite_color = ?, age = ?, description = ? WHERE user = ?"); 

// we would have a bind looking like this: 
$query->bind_param('sibs', 'red', 27, $some_blob, $variable); 
$query->execute(); 

Порядочный объяснение об этом (и SQL Injection) можно найти here.

+0

У моего php.ini уже есть эта настройка: magic_quotes_runtime = Off – JohnnyStarr

+0

Хорошо, это была настройка magic_quotes для GET и POST. Изменив это, он работал как шарм. Кроме того, спасибо за информацию привязки. – JohnnyStarr

+0

Хорошо круто. Я счастлив, что он решен. Если мой ответ помог, не забудьте +1 и отметьте его как правильно. Tnx! – Jules

1

Вы используете подготовленные заявления mysqli?
Если да, то вы не должны использовать mysqli->real_escape_string() тогда
Если нет - то у вас есть magic_quotes_gpc и вы должны отключить его

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