我正在尝试执行一个准备好的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命名,这就是我不能直接在查询中写表名的原因)
答案 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"]));