MySQL не позволяет 'и "в длинном тексте - PullRequest
0 голосов
/ 30 июля 2011

MySQL не позволяет мне использовать "s" и "s" с контекстной формой, которую я создал для своего сайта. Все остальные поля отправляются в базу данных просто отлично, но длинное текстовое поле также выдает ошибку, если вы используете что-то кроме буквы и цифры.

У меня есть длинный текст, а не ноль.

Я пытаюсь добавить mysql_real_escape_string () в мой код

Ответы [ 4 ]

1 голос
/ 30 июля 2011

Используйте параметризованный запрос, тогда вам не нужно беспокоиться о экранировании специальных символов, и он также более безопасен (например, против атаки SQL-инъекцией).

0 голосов
/ 30 июля 2011

лучше использовать подготовленные операторы, чем метод, который вы приняли, плюс плюсы использования подготовленных операторов, таких как PDO, это избавит вас от атак, таких как инъекции MYSQL, и их намного больше, в основном PDO - встроенный PHP класс, который позволяет вам легко взаимодействовать с вашей базой данных, плюс он очень гибкий, например,

Чтобы установить соединение с помощью PDO, вам просто нужно использовать одну строку кода, это все равно, что инициализировать объект.

$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD);

вот и все, пожалуйста, обратите внимание, что я использовал Constant, вы можете заменить его на свой собственный.

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

$sth = $dbh->query('SELECT id,name FROM table');
//Query is executed in the above code, and when you want to retrieve the value you just need another line of code.
$result = $sth->fetchAll(PDO::FETCH_ASSOC);

Вот и все, теперь у вас есть массив $ result, который содержит все найденные значения. разве это не очень просто и удобно?

Чтобы начать работу с PDO, посмотрите этот учебник в net.tutsplus.com они объяснили это очень хорошо.

0 голосов
/ 30 июля 2011

Это должно работать как предложено

$sql2="INSERT INTO $tbl_name(s_id, s_name, s_email, s_content) VALUES(".$id.", '".mysql_real_escape_string($s_name)."', '".mysql_real_escape_string($s_email)."', '".mysql_real_escape_string($s_content)."')"; 

Вы должны: воспользоваться подготовленными высказываниями, а если вы этого не сделаете, ВСЕГДА убегайте !!! значения, которые поступают из клиентского ввода. Если нет, то ваш сайт может быть легко взломан скрипт-кидди, который просто протестирует некоторые sql-инъекции.

0 голосов
/ 30 июля 2011

найти в вашем языке программирования функцию, которая не использует косую черту и т.п., и применить ее к вашему выводу перед отправкой в ​​базу данных

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