Ошибка базы данных при вставке значений в MySql - PullRequest
0 голосов
/ 18 ноября 2018

У меня ошибка при вставке значения mysql. Пожалуйста, смотрите мой код PHP

<?php
    $ali = $_POST['ali'];

    $con = @mysqli_connect('localhost', 'root', '', 'mohammad');

    if (!$con) {
        echo "Error: " . mysqli_connect_error();
        exit();
    }

    $insertinto_ic_add = "INSERT INTO sq (text) VALUES ('" . $ali . "')";
    mysqli_query($con, $insertinto_ic_add) or die("database error:" . mysqli_error($con));

?>
<form action="" method="post">
    <input name="ali">
</form>

Я ввожу значения "n't", и возникает ошибка:

ошибка базы данных: у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 't') 'в строке 2

1 Ответ

0 голосов
/ 19 ноября 2018

Я согласен, что это не показывает SQL-инъекцию.Но предотвращение такого же, как и решение вашей проблемы.Вы должны экранировать определенные символы (в частности, апостроф) в тексте.

Обратите внимание, что сообщение об ошибке даже указывает на апостроф.

Если вы повторили утверждение,вы увидите

INSERT INTO sq (text) 
VALUES ('blah blah don't do this')

Наблюдайте за тремя апострофами и подумайте, насколько запутанным будет парсер.

Лучший код будет выглядеть примерно так:

$mali = $con->real_escape_string($ali);
$insertinto_ic_add = "INSERT INTO sq (text) 
         VALUES ('" . $mali . "')";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...