首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql_real_escape_string到mysqli的转换

mysql_real_escape_string到mysqli的转换
EN

Stack Overflow用户
提问于 2014-01-05 06:43:30
回答 3查看 1.7K关注 0票数 0

好的,我想知道你是如何将这段mysql代码转换成mysqli的。

代码语言:javascript
运行
复制
function protect($string) {
return mysql_real_escape_string(strip_tags(addslashes($string)));
}

我知道您将mysql更改为mysqli,但它要求提供两个参数,这对mysql有效,所以我希望在mysqli中看到它

此外,我还没有在stackoverflow上找到关于新mysqli版本的问题的人,所以我自己也找不到

EN

回答 3

Stack Overflow用户

发布于 2019-12-03 05:34:37

最好是根本不用它!

mysql_real_escape_string()是一个用来阻止SQL注入的黑客,它甚至没有100%做到这一点。这个函数从来不是用来保护任何东西的。它是一个简单的字符串格式化函数。

mysqli_real_escape_string()是另一种使过渡变得更容易的技巧。虽然,在写这篇文章的时候,mysql_*已经被弃用了很长时间,所以没有人应该有任何借口使用某种填充程序进行转换,因为每个人都应该已经将MySQLi与预准备语句或甚至更好的PDO一起使用了。

至于strip_tags()addslashes(),它们在这种情况下是无用的,只会破坏你的数据。不要使用它们。

为了防止SQL注入,应该使用预准备语句,并确保没有变量输入直接插入到SQL中。

例如:

代码语言:javascript
运行
复制
$stmt = $mysqli->prepare('SELECT columnA FROM tableB WHERE columnC=?');
$stmt->bind_param('s', $someVariable);
$stmt->execute();
$result = $stmt->get_result();
票数 2
EN

Stack Overflow用户

发布于 2014-01-05 06:52:34

试着这样做:

代码语言:javascript
运行
复制
$mysqli = new mysqli("host", "username", "pword", "db");

function protect($string) {

    return $mysqli->real_escape_string(strip_tags(addslashes($string)));

    }

编辑

代码语言:javascript
运行
复制
$link = mysqli_connect("localhost", "root", "", "aaa");
$city = "'s Hertogenbosch";
$city = mysqli_real_escape_string($link, $city);

echo($city);
票数 0
EN

Stack Overflow用户

发布于 2014-01-05 06:54:28

这个函数不是一个好主意。

在所有传入数据上不加区别地使用strip_tags()addslashes()会对其造成不必要的破坏,安全性为零。

要将数据输入数据库,请仅使用字符串转义函数,real_escape_string().

  • To在页面上显示来自用户的数据,然后剥离标记或使用htmlspecialchars()来避免任何脚本攻击。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20927662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档