2016-05-25 85 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查詢的一部分 - 你可以有任何東西,它不會執行命令。

也就是說,您可能想要做一些驗證,以確保您接受的數據有意義。垃圾進垃圾出。例如,您不想保存無效的日期。