mysql_real_escape_string转换为mysqli

时间:2014-01-04 22:43:30

标签: mysql mysqli

好的,我想知道如何将这个mysql代码转换为mysqli。

function protect($string) {
return mysql_real_escape_string(strip_tags(addslashes($string)));
}

我知道你将mysql更改为mysqli但它要求使用mysql的2个参数,所以我想在mysqli中看到它

我还没有找到有关新mysqli版本的问题的stackoverflow,所以我无法找到自己

3 个答案:

答案 0 :(得分:2)

最好不要使用它!

mysql_real_escape_string()是一种用于防止SQL注入的hack,甚至没有100%做到这一点。此功能从未打算保护任何东西。这是一个简单的字符串格式化功能。

mysqli_real_escape_string()是另一个使过渡更容易的技巧。尽管在撰写本文时mysql_*已被弃用了很长时间,但没有人应该有任何借口使用某种填充程序进行过渡,因为每个人都应该已经使用带有预备语句甚至更好的MySQLi PDO。

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

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

例如:

$stmt = $mysqli->prepare('SELECT columnA FROM tableB WHERE columnC=?');
$stmt->bind_param('s', $someVariable);
$stmt->execute();
$result = $stmt->get_result();

答案 1 :(得分:0)

试试这样:

$mysqli = new mysqli("host", "username", "pword", "db");

function protect($string) {

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

    }

修改

$link = mysqli_connect("localhost", "root", "", "aaa");
$city = "'s Hertogenbosch";
$city = mysqli_real_escape_string($link, $city);

echo($city);

答案 2 :(得分:0)

这个功能不错。

不加区分地对所有传入数据使用strip_tags()addslashes()会不必要地毁掉它,并增加零安全性。

  • 要将数据提供给数据库,请仅使用字符串转义函数real_escape_string().

  • 要在HTML页面上显示用户的数据,请删除标记然后或使用htmlspecialchars()以避免任何脚本攻击。