我对新的PHP命令不是很熟悉,所以我想与你联系,看看下面的代码是否可以防止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();
基本上,脚本从表单接收发布数据,将它们记录到数据库中,然后将它们提交到另一个脚本以执行实际搜索(在第三方网站上)。
答案 0 :(得分:4)
是的,准备好的语句对SQL注入是安全的,因为它们不被解释为SQL查询的一部分 - 你可以在那里拥有任何东西,它不会执行命令。
也就是说,您可能想要进行一些验证,以确保您接受的数据有意义。垃圾进垃圾出。例如,您不想保存无效的日期。