首页 > 解决方案 > 将值插入 MySql 时出现数据库错误

问题描述

我在插入值 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')' 附近使用正确的语法

标签: phpmysqlmariadb

解决方案


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

推荐阅读