У меня есть простая страница опроса, которую я пытался сделать. Все работало хорошо, за исключением случаев, когда я использовал одну цитату в своем комментарии на странице опроса. Когда у меня был комментарий с одной цитатой в нем, запрос БД не вставлялся в БД.реализация строки escape-последовательности MYSQL
После некоторого Googleing я предположил, что мне нужно было избежать строки, прежде чем вставлять ее в БД. Я использовал mysqli_real_escape_string, чтобы избежать строки до INSERTing в БД, но это, похоже, не помогло.
Вот мой код, который вставляет комментарии пользователя в БД ($ CON не показан для безопасности)
mysqli_real_escape_string($con,$_POST['question_1']);
mysqli_real_escape_string($con,$_POST['question_2']);
mysqli_real_escape_string($con,$_POST['question_3']);
mysqli_real_escape_string($con,$_POST['question_4']);
mysqli_real_escape_string($con,$_POST['question_5']);
mysqli_query($con, "INSERT INTO feedback (question_1, question_2, question_3, question_4, question_5) VALUES ('$_POST[question_1]', '$_POST[question_2]', '$_POST[question_3]', '$_POST[question_4]', '$_POST[question_5]')");
Опять же, это происходит только тогда, когда комментарий содержит апостроф. Какие-либо предложения? Не удалось ли я избежать строки?
Назначить переменную к нему первым '$ q1 = mysqli_real_escape_string ($ против, $ _ POST [ 'question_1']);' затем сделать 'ЗНАЧЕНИЯ (' " $ q1." ') 'и т. д. из-за того, что вы делаете сейчас. VALUES (' $ _POST [question_1] ',' бессмысленно. Также вы можете использовать 'stripslashes()' или использовать [подготовленные заявления] (http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php) и делать с ним. Нет необходимости использовать дополнительные функции. –
Я бы избегал 'stripslashes()' просто потому, что он, как правило, пропускает некоторые обстоятельства, в которых вещи не являются безопасными SQL. У меня никогда не было функции escaping, которая не позволяла безопасным SQL (не путать с безопасностью) строки – Machavity
@Machavity Stripslashes позволяет записывать O'Malley в DB точно как показано, вместо О'Малли. –