Php mysql\u real\u escape\u string()语法问题
我一直在对mysqli_real_escape_string()进行一些研究,但我不太了解如何在我的案例中正确使用它来帮助防止SQLInjection,使用下面的代码,有人能帮我纠正吗?我感谢所有的帮助。这里的其他问题是规范sql注入和php,当我使用以下内容时,没有真正回答我规范格式中正确语法用法的问题:Php mysql\u real\u escape\u string()语法问题,php,sql,mysqli,Php,Sql,Mysqli,我一直在对mysqli_real_escape_string()进行一些研究,但我不太了解如何在我的案例中正确使用它来帮助防止SQLInjection,使用下面的代码,有人能帮我纠正吗?我感谢所有的帮助。这里的其他问题是规范sql注入和php,当我使用以下内容时,没有真正回答我规范格式中正确语法用法的问题: "$city = mysqli_real_escape_string($_POST['City']); 无论“%$city%”或“%$business%”的输入是什么,我都只进行了一般搜索
"$city = mysqli_real_escape_string($_POST['City']);
无论“%$city%”或“%$business%”的输入是什么,我都只进行了一般搜索
<?php
$con = mysqli_connect(........);
// Check connection
if (mysqli_connect_errno())
{
echo "<option>Failed to connect to the Database</option>" ;
}
$city = mysqli_real_escape_string($con, $_POST['City']);
$business = mysqli_real_escape_string($con, $_POST['Business']);
$result = mysqli_query($con,"SELECT * FROM Business WHERE City LIKE '%$city%' AND BName LIKE '%$business%' ORDER BY City, BName ASC");
while($row = mysqli_fetch_array($result))
{
// do stuff here
}
// No other results
echo "<center>No other listings like $city or $business</center>";
// Free result set
mysqli_free_result($result);
mysqli_close($con);
?>
您必须使用mysqli\u real\u escape\u string
而不是mysql\u real\u escape\u string
,因为您使用的是mysqli\u*
函数
字符串mysqli\u real\u escape\u字符串(mysqli$link,字符串$escapestr)
你必须将转义序列重写为
$city = mysqli_real_escape_string ($con, $_POST['City']);
$business = mysqli_real_escape_string ($con, $_POST['Business']);
为了防止sql注入
使用预付费语句
。忘记mysql\u real\u escape\u string()
和传统的mysql扩展,它被放弃了,而且不安全。如果您正在使用新的mysqli扩展,请一直使用它(还有其他原因,因为您不能混合使用两个不同的数据库扩展)。准备好的声明才是出路;句号。很抱歉,这是我输入的错误,我正在使用mysqli,它只是清理所有输入,因此我的搜索结果一直是“%”,而不是“%USERS INPUTS IN VARIABLE FORM%”。如果您的代码有问题,请发布真正的代码。如果要阻止SQL注入,请使用预处理语句而不是转义函数。好的,我将查看预处理语句,感谢您的帮助我很抱歉我输入错误,我正在使用mysqli它只是清理所有输入,因此,我的搜索结果一直是“%”,而不是“%USERS INPUTS IN VARIABLE FORM%”。当我不使用mysqli\u real\u escape\u string()时,搜索效果非常好