首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysqli_real_escape_string不会插入到数据库中

mysqli_real_escape_string 是 PHP 中用于防止 SQL 注入攻击的一个函数,它会对字符串中的特殊字符进行转义,以确保这些字符在 SQL 语句中被正确处理。然而,如果你发现使用 mysqli_real_escape_string 处理的数据没有插入到数据库中,可能是以下几个原因造成的:

原因分析:

  1. 连接问题:数据库连接可能没有成功建立,导致数据无法插入。
  2. SQL 语句错误:即使使用了 mysqli_real_escape_string,如果 SQL 语句本身有语法错误,数据也无法插入。
  3. 字符集问题:数据库和 PHP 脚本使用的字符集不一致可能导致插入失败。
  4. 权限问题:数据库用户可能没有足够的权限来插入数据。
  5. 函数使用不当mysqli_real_escape_string 需要与数据库连接对象一起使用,使用方法不当也会导致问题。

解决方案:

  1. 检查数据库连接: 确保数据库连接代码正确无误,并且能够成功连接到数据库。
  2. 检查数据库连接: 确保数据库连接代码正确无误,并且能够成功连接到数据库。
  3. 检查 SQL 语句: 确保 SQL 语句正确无误,可以在数据库管理工具中手动执行该语句进行测试。
  4. 检查 SQL 语句: 确保 SQL 语句正确无误,可以在数据库管理工具中手动执行该语句进行测试。
  5. 设置字符集: 确保 PHP 脚本和数据库使用相同的字符集。
  6. 设置字符集: 确保 PHP 脚本和数据库使用相同的字符集。
  7. 检查权限: 确保数据库用户有足够的权限来执行插入操作。
  8. 正确使用函数: 确保 mysqli_real_escape_string 函数与数据库连接对象一起正确使用。

示例代码:

代码语言:txt
复制
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 设置字符集
$conn->set_charset("utf8");

// 防止 SQL 注入
$name = mysqli_real_escape_string($conn, $_POST['name']);

// 插入数据
$sql = "INSERT INTO users (name) VALUES ('$name')";
if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

// 关闭连接
$conn->close();
?>

参考链接:

请注意,尽管 mysqli_real_escape_string 可以防止 SQL 注入,但它并不是最安全的方法。更推荐使用预处理语句(prepared statements),例如使用 mysqli 扩展的 preparebind_param 方法,或者使用 PDO 扩展的预处理语句。这样可以更有效地防止 SQL 注入攻击,并且代码更加清晰和安全。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 如何使用Hutool插入图片Excel

    插入图片Excel的需求假设我们需要将某个Java对象的数据导出到Excel,并且要求在Excel显示对象的图片。...使用Hutool插入图片Excel的方法Hutool提供了非常方便的API,可以帮助我们将图片插入Excel。具体步骤如下:1. 创建Excel对象首先,我们需要创建一个Excel对象。...插入图片在前面的步骤,我们已经将Employee对象的数据写入Excel。现在,我们需要将照片插入Excel。具体步骤如下:获取Employee对象的照片URL地址。...这里我们假设Employee对象的照片要插入第4列第2行的单元格。...(tempFileName);总结在这篇文章,我们介绍了如何使用Hutool插入图片Excel

    2.1K30

    Golang并发把excel数据插入数据库

    = nil { return } _, err = io.Copy(localFile, res.Body) //把body里的内容复制本地excel文件 if err !...每次批量插入100条数据数据库 func InsertBatch(temp [][]string, length int) error { db := modelUtils.GetDB() //gorm...= nil { return err } return nil } 3.并发调用 每100个批量插入就放进channel成为一个缓存,channel的缓存大小为50,每50个channel开启一个...: 大概有40多万条数据,每5000条数据一个goroutine,那么大概需要80多个goroutine,总共花费的时间大概是1分钟,因为阿里云服务器为2核4G的性能,所以主要的性能瓶颈在于服务器上的数据库...,虽然开启的数据库池,但是单条数据的插入时间是固定的 我还试了一下把同样40多万的数据插入亚马逊云的数据库,要16分钟左右,因为服务器在国外,所以受网络影响较大 image.png

    2.9K10

    pdf格式的图片如何插入word

    然后我要将其放到word,问题来了,怎么将高清的pdf图片格式放到word呢?然后就开始了我一系列的折腾。...废话1 有一个百度经验,竟然是把pdf打开,然后用截图软件截图为png,然后直接复制粘贴到word。截图的清晰度不好,效果类似: ?...废话2 将pdf复制word,双击pdf的图标就可以打开pdf…… ? 操作失败3 据说,word可以直接插入pdf 「插入 ---> 对象 ----> 对象」 ?...吐槽4 我想着pdf的图片,加到论文中,这不应该是一个常规的操作么,为何我没有找到合适的方法呢,是没有写过论文的缘故吗…… 搞定5 既然无法直接插入pdf图片,那就把pdf转化为其它格式吧。...真香6 将pdf转化为png的图片,粘贴到word,搞定!

    4.1K10

    插入一个MySQL 及 SQL 防止注入

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。...所谓SQL注入,就是通过把SQL命令插入Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。...以下实例,输入的用户名必须为字母、数字及下划线的组合,且用户名长度为 8 20 个字符之间: if (preg_match("/^\w{8,20}$/", $_GET['username'], $...username=$matches[0]"); } else { echo "username 输入异常"; } 让我们看下在没有过滤特殊字符时,出现的SQL情况: // 设定$name 插入了我们不需要的...在PHP脚本我们可以使用addcslashes()函数来处理以上情况,如下实例: $sub = addcslashes(mysqli_real_escape_string($conn, "%something

    1.3K00

    MySQL数据库的防护 SQL 注入安全的操作

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。...所谓SQL注入,就是通过把SQL命令插入Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。...以下实例,输入的用户名必须为字母、数字及下划线的组合,且用户名长度为 8 20 个字符之间: if (preg_match("/^\w{8,20}$/", $_GET['username'], $...username=$matches[0]"); } else { echo "username 输入异常"; } 让我们看下在没有过滤特殊字符时,出现的SQL情况: // 设定$name 插入了我们不需要的...在PHP脚本我们可以使用addcslashes()函数来处理以上情况,如下实例: $sub = addcslashes(mysqli_real_escape_string($conn, "%something

    1.5K00

    MySQL 的防护 SQL 注入安全的操作

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。...所谓SQL注入,就是通过把SQL命令插入Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。...以下实例,输入的用户名必须为字母、数字及下划线的组合,且用户名长度为 8 20 个字符之间: if (preg_match("/^\w{8,20}$/", $_GET['username'], $...username=$matches[0]"); } else { echo "username 输入异常"; } 让我们看下在没有过滤特殊字符时,出现的SQL情况: // 设定$name 插入了我们不需要的...在PHP脚本我们可以使用addcslashes()函数来处理以上情况,如下实例: $sub = addcslashes(mysqli_real_escape_string($conn, "%something

    1.6K00
    领券