我试图根据1表格中的信息将记录插入2个不同的表中。但是我收到语法错误。不知道我在做什么错。
$query = "
INSERT INTO
" . DB_PFIX . "pages (
title,
url,
content,
parent,
created_by,
created_date,
published
) VALUES (
'" . $_POST["title"] . "',
'" . $_POST["url"] . "',
'" . $_POST["content"] . "',
'" . $_POST["parent"] . "',
'" . $user_id . "',
'" . $time . "',
'" . $_POST["published"] . "'
);
INSERT INTO
" . DB_PFIX . "links (
name,
function
) VALUES (
'" . $_POST["url"] . "',
'pages'
);
";
这是我收到的错误消息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO links ( name, function ) VALUES ( '' at line 19
最佳答案
问题不在于本质上有多个表。问题是,默认情况下,PHP mysqli接口不允许在单个语句字符串中包含多个语句。
使用mysqli,可以启用允许该选项的选项。但是请注意,此选项为某些讨厌的SQL注入打开了广阔的大门。默认设置(每个语句字符串仅允许一个SQL语句)不会阻止SQL注入。但确实确实使整个SQL注入工作陷入困境。)
无需重复此处提供的文档:
http://php.net/manual/en/mysqli.quickstart.multiple-statement.php http://php.net/manual/en/mysqli.quickstart.multiple-statement.php
启用该选项后,可以在单个语句字符串中提交多个SQL语句。
我将再次重复,启用多个语句确实会为“小鲍比表”式的糊涂打开大门
XKCD: Exploits of a Mom
(尚不清楚您使用的是mysqli还是PDO,但鉴于此语句不包含绑定参数占位符,因此,我冒昧地说这不是准备好的语句,因此很可能正在使用PDO以外的接口。)