Вставка строк в MySQL - PullRequest
       1

Вставка строк в MySQL

0 голосов
/ 28 февраля 2011

Я столкнулся с проблемой, когда я думаю, что мой оператор вставки в MySQL портит строки, которые вводятся в базу данных.

У меня есть такой оператор вставки в коде PHP:

$sql = 'insert into my_table ( numeric_id , string_value ) 
        values ( '.$some_number.' , "'.$some_text.'" )';

И когда позже я получаю $some_text из базы данных, он портит строки вроде don\'t вместо не и рекламирует такие вещи, как \r\n на выходе.

Есть идеи, почему это происходит и что я должен изменить?

Ответы [ 5 ]

3 голосов
/ 28 февраля 2011

Часть вашего кода выполняет экранирование дважды.
Вам просто нужно найти код, который делает это во второй раз, и избавиться от него.

Прежде всего, вы должны распечатать свои переменные впосмотрите на его реальное содержание.
Трудно, черт возьми, разобраться, что ослепляет и основано на предположениях.

Просто распечатайте переменную $some_text, прежде чем ее убрать, и посмотритеесли он уже экранирован - тогда в коде было сделано дополнительное экранирование где-то ранее.

1 голос
/ 01 марта 2011

Всегда используйте подготовленные операторы для интерполяции данных в SQL.Тогда вам вообще не нужно убегать.

0 голосов
/ 03 марта 2011

$ sql = "вставить в my_table (numeric_id, string_value) значения ('$ some_number', '$ some_text')"; $ query = mysql_query ($ sql);

/ ** просто используйте (") вместо ('); * /

0 голосов
/ 28 февраля 2011

это должно работать

$sql = "insert into my_table ( numeric_id , string_value ) 
        values ( '.$some_number.' , '".$some_text."' )";

0 голосов
/ 28 февраля 2011

Прежде всего, избегайте ввода:

$sql = 'insert into my_table ( numeric_id , string_value ) values (' . mysql_real_escape_string($some_number) . ', "' . mysql_real_escape_string($some_text) . '")';

Во-вторых, проблема с косой чертой, вероятно, связана с PHP Magic Quotes. Вы можете прочитать больше об этом здесь: http://www.php.net/manual/en/security.magicquotes.disabling.php

Вы можете проверить, включены ли магические кавычки, выполнив следующее:

var_dump(get_magic_quotes_gpc());

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

if (get_magic_quotes_gpc()) {
    function stripslashes_gpc(&$value) {
        $value = stripslashes($value);
    }
    array_walk_recursive($_GET, 'stripslashes_gpc');
    array_walk_recursive($_POST, 'stripslashes_gpc');
    array_walk_recursive($_COOKIE, 'stripslashes_gpc');
    array_walk_recursive($_REQUEST, 'stripslashes_gpc');
}

(взято с PHP.net)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...