【问题标题】:Database error when inserting values into MySql将值插入 MySql 时出现数据库错误
【发布时间】:2018-11-18 06:53:13
【问题描述】:

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

【问题讨论】:

标签: php mysql mariadb


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2013-04-25
    • 2014-11-15
    • 1970-01-01
    相关资源
    最近更新 更多