通过检查列出这些表的表,可以预先将表名与可接受表的白名单进行比较。该列表必须是动态的,这就是我选择不使用数组的原因。设置变量部分中的变量是否安全?他们即将提交用户提交的帖子数据。
if ($stmt = $mysqli->prepare("INSERT INTO `" . mysql_real_escape_string($tablename) . "` (item_name, item_price, item_position, item_type, multi_link_id) values (?, ?, ?, ?, ?)")) {
//Build Parameters
$stmt->bind_param('sdiii', $additemnameb, $additempriceb, $itempositionb, $itemtypeb, $linkidb);
//Set Variables
$additemnameb = $additemname;
$additempriceb = $additemprice;
$itempositionb = $itemposition;
$itemtypeb = $itemtype;
$linkidb = $linkid;
//Execute Statement
$stmt->execute();
//Close Statement
$stmt->close();
}else{
//Errors
printf("Prepared Statement Error: %s\n", $mysqli->error);
}
编辑有一个实际的问题要清楚我关心的是什么。
答案 0 :(得分:0)
回答您的问题是// Set Variables
部分中的变量是安全的,或者从技术上讲,变量在执行查询之前将变得安全。 Mysqli为你照顾它。