好的,我想知道你是如何将这段mysql代码转换成mysqli的。
function protect($string) {
return mysql_real_escape_string(strip_tags(addslashes($string)));
}我知道您将mysql更改为mysqli,但它要求提供两个参数,这对mysql有效,所以我希望在mysqli中看到它
此外,我还没有在stackoverflow上找到关于新mysqli版本的问题的人,所以我自己也找不到
发布于 2019-12-03 05:34:37
最好是根本不用它!
mysql_real_escape_string()是一个用来阻止SQL注入的黑客,它甚至没有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();https://stackoverflow.com/questions/20927662
复制相似问题