php - 将值插入 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')' 附近使用正确的语法
解决方案
我同意这没有显示 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 . "')";
推荐阅读
- riscv - RISC-V HW 如何确定权限级别?
- java - 数据截断:截断不正确的 DOUBLE 值:更新时
- c - cs50 Pset4 图像模糊问题
- amazon-web-services - 用于列出存储桶的 AWS STS 拒绝访问
- c++ - 从数组中删除元素,使总和小于或等于特定值。(不是子数组)
- c - 在c中填充没有calloc和malloc的数组?
- micronaut - Micronaut 约束验证
- elasticsearch - Elasticsearch 为“必须不存在”查询返回包含现有字段的行
- c# - 在 Blazor 应用程序中,如果渲染模式设置为“服务器”,是否可以获得请求的路径?
- javascript - 主页的 React Router 活动类