Я столкнулся с проблемой, когда, по-моему, мой оператор 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."') ";