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

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

В PHP-коде есть такой оператор insert:

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

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

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

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

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

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

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

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

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

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

 $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)

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

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