2016-05-25 62 views
0

我对新的PHP命令不太熟悉,所以我想检查下面的代码是否受到SQL注入的保护?此代码是否防止SQL注入?

$mysqli = new mysqli($server,$user , $password, $db_name); 
$stmt1 = $mysqli->prepare("insert into $db_table (request_date, from_city, from_country, to_city, to_country, travel_date, return_date, minus, plus, currency) 
             values(?,?,?,?,?,?,?,?,?,?)"); 

$date = date('Y-m-d H:i:s'); 
$stmt1->bind_param("ssssssssss",$date, 
           $_POST['from_city'], 
           $_POST['from_country'], 
           $_POST['to_city'], 
           $_POST['to_country'], 
           $_POST['travel_date'], 
           $_POST['return_date'], 
           $_POST['minus'], 
           $_POST['plus'], 
           $_POST['currency'] 
        ); 

$stmt1->execute(); 

基本上,脚本的形式接收后的数据,将它们记录到数据库中,然后将它们提交给另一个脚本来执行实际的搜索(在第三方网站)。

回答

4

是的,预处理语句对于SQL注入是安全的,因为它们不被解释为SQL查询的一部分 - 你可以有任何东西,它不会执行命令。

也就是说,您可能想要做一些验证,以确保您接受的数据有意义。垃圾进垃圾出。例如,您不想保存无效的日期。