Php 使用表参数化PDO中的列/表名称

Php 使用表参数化PDO中的列/表名称,php,mysql,pdo,Php,Mysql,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" => $

这是不可能的

例如:

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吗?

一点也不

如果你拿一个装有毒药的瓶子喝下去,你会死的。
是什么让你认为在喝酒前把它放在橱柜里会使它无害

更直接地针对你的问题,你应该永远不要根据用户输入创建表格。不是因为任何危险,而是因为理智。您的数据库设计应该是稳定的和静态的,一次完成,仅在某些情况下由管理员修改


因此,您现在最关心的是学习数据库设计的基础知识。

最终目标是为每种类型的项目创建一个类似于item的表,因为我在这里处理的是库存。所以有一个清晰的设计,但是数据库会随着用户的需求而增长,它一点也不干净。它应该是一个单独的表,其中$进入一个字段。所以结论是一样的——学习数据库基础知识