无法use parameters to describe column or table names in PDO。
例如:
CREATE TABLE ? (id INT(6) PRIMARY KEY AUTO_INCREMENT, ...)
如何使用临时表来处理恶意数据,然后将其反馈到语句中?
$hex = bin2hex(random_bytes(8));
$stmt = $db->prepare('INSERT INTO tmpdata (value,hex) VALUES (:val,:hex)');
$stmt->execute(array(
":val" => $_POST['catname'],
":hex" => $hex
));
$stmt = $db->prepare('SELECT value FROM tmpdata WHERE hex=?');
$stmt->execute(array($hex));
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
$cleaned_value = $row[0]['value'];
对于列名和表名,这是将参数输入PDO的可接受且更重要的安全方法吗?
答案 0 :(得分:0)
没有丝毫。
如果你带一个带毒药的烧瓶并喝它,你就会死 是什么让你觉得在饮用前将它存放在橱柜里会使它无害?
更直接地针对您的问题,您应该永远不会根据用户输入创建表格。不是因为任何危险而是因为理智。您的数据库设计应该是实体和静态的,只为所有人制作一次,并且仅在有时候仅由管理员进行更改。
因此,您现在最关心的是学习数据库设计基础知识。