0

我正在尝试执行一个准备好的 sql 请求,它应该将值插入到变量表中

这段代码会比我更明确:

$req = $db->prepare("INSERT INTO ? 
                    (    `id`, 
                         `parent_id`, 
                         `position`, 
                         `left`, 
                         `right`, 
                         `level`, 
                         `title`, 
                         `type`, 
                         `content`   ) 
                    VALUES (NULL, 
                         '2', 
                         'last', 
                         '3', 
                         '10', 
                         '2', 
                         ?, 
                         'default', ?);");

$req->execute(array($_SESSION["user_id"], $result["title"], $result["content"]));

所有变量都已设置,我用一些回声检查了这一点。是否可以“插入”变量?

(每个用户都有自己的表,以其唯一的 id 命名,这就是为什么我不能直接在查询中写表名的原因)

4

2 回答 2

2

表名不能使用命名参数;如果你想这样做,你必须直接在你的 SQL 中包含名称:

INSERT INTO $tablename (....

但是 - 这仍然对 SQL 注入攻击开放。

如果您想存储这样的数据,我会将所有内容放入一个表中,然后添加一个额外的字段作为附加键。

于 2012-08-17T14:18:10.890 回答
0

不,你不能这样做,你需要像下面那样做。

$table = $_SESSION["user_id"];
$req = $db->prepare("INSERT INTO $table (`id`, `parent_id`, `position`, `left`, `right`, `level`, `title`, `type`, `content`) VALUES (NULL, '2', 'last', '3', '10', '2', ?, 'default', ?);");
$req->execute(array($result["title"], $result["content"]));
于 2012-08-17T14:17:55.850 回答