Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u real\u escape\u string()语法问题_Php_Sql_Mysqli - Fatal编程技术网

Php mysql\u real\u escape\u string()语法问题

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%”的输入是什么,我都只进行了一般搜索

我一直在对mysqli_real_escape_string()进行一些研究,但我不太了解如何在我的案例中正确使用它来帮助防止SQLInjection,使用下面的代码,有人能帮我纠正吗?我感谢所有的帮助。这里的其他问题是规范sql注入和php,当我使用以下内容时,没有真正回答我规范格式中正确语法用法的问题:

"$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()时,搜索效果非常好