可能是重复问题:
如何在PHP中防止SQL注入的最佳方法
进行查询时,什么是转义字符串的最佳方法?mysql_real_escape_string()似乎不错,但我不知道如何正确使用它。
这段代码是否能够很好地完成工作?
<?php
/* Let's say that the user types "'#""#''"\{(})#&/\€ in a textfield */
$newStr = mysql_real_escape_string($str);
$query = "INSERT INTO table username VALUES ($str)";
mysql_query($query);
?>
现在我有这段代码:
$email = $_POST['email'];
$displayName = $_POST['displayName'];
$pass = $_POST['pass1'];
$email = mysqli_real_escape_string($link, $email);
$displayName = mysqli_real_escape_string($link, $displayName);
$pass = mysqli_real_escape_string($link, $pass);
$insert = "INSERT INTO profiles (email, displayName, password)
VALUES ('$email', '$displayName', md5('$pass'))";
mysqli_query($link, $insert)
or die(mysqli_error($link));
但我收到了这个错误: 您的SQL语法有误; 请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法在第1行附近使用!"#!#^!"#!"#!"#^''''''。
如果用户输入: '**!"#!#^!"#!"*#!"#^''''
mysql_*
函数即将被弃用,请使用PDO或MySqli。 - Lion