新准备好的声明,只是不觉得安全


New to Prepared Statements, just doesn't feel secure

通过检查列出这些表的表,将表名与可接受表的白名单进行比较。这个列表必须是动态的这就是我不使用数组的原因。在设置变量部分的变量安全吗?它们是用户提交的帖子数据。

    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);
    }

编辑成一个实际的问题,以明确我所关心的。

回答您的问题是的,// Set Variables部分中的变量是安全的,或者更严格地说,这些变量在执行查询之前将变得安全。