准备好sql请求INSERT INTO变量表

时间:2012-08-17 14:14:41

标签: php sql

我正在尝试执行一个准备好的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"]));

所有变量都已设置,我检查了一些回声。 难道“INSERT INTO”变量吗?

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

2 个答案:

答案 0 :(得分:2)

您不能将命名参数用于表名;如果你想这样做,你必须直接在SQL中包含这个名字:

INSERT INTO $tablename (....

然而 - 这仍然是SQL注入攻击的开放。

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

答案 1 :(得分: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"]));