Osk*_*son 8 mysql string escaping
可能重复:
在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);
?>
Run Code Online (Sandbox Code Playgroud)
编辑:
现在我有这个代码:
$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));
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:你的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在' ! '附近使用正确的语法#!#^!"#!"#!"#^''''''在第1行
如果用户输入:'**!'#!#^!"#!"*#!"#^''''
使用mysql_real_escape_string这样可以工作,但你需要:
$newStr,而不是原始值$str.试试这个:
$query = "INSERT INTO yourtable (username) VALUES ('$newStr')";
Run Code Online (Sandbox Code Playgroud)
我还建议您检查结果,mysql_query($query)如果有错误,您可以检查错误消息:
if (!mysql_query($query))
{
trigger_error(mysql_error());
}
Run Code Online (Sandbox Code Playgroud)
您还应该考虑使用MySQL的一个较新的接口.旧mysql_*函数已弃用,不应在新代码中使用.
| 归档时间: |
|
| 查看次数: |
7898 次 |
| 最近记录: |