将值插入MySql时数据库错误

时间:2018-11-18 06:53:13

标签: php mysql mariadb

我在插入值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服务器版本相对应的手册,以在第2行的't')'附近使用正确的语法

1 个答案:

答案 0 :(得分:0)

我同意 this 没有显示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 . "')";