2012-07-17 48 views
0

我正在构建一个简单的cms,我试图在用户注册时自动在数据库中创建一个附加。代码工作得很好,第一个插入行,但一旦我添加第二个,它停止工作。我从StackOverflow获得了这个代码结构,并且我查看了其他网站,它似乎是正确的,但对于我的生活,我无法弄清楚什么是错的。有什么建议么?多个mySQL插入的问题

$registerquery = mysql_query("BEGIN 
INSERT INTO users (Username, Password, EmailAddress) 
VALUES ('".$username."', '".$password."', '".$email."') 
INSERT INTO pages (page_title, page_owner) 
VALUES ('My New Page', LAST_INSERT_ID()) 
COMMIT"); 
+0

请做一些关于SQL注入攻击的研究。 – 2012-07-17 18:00:27

+0

你不能这样做。每个数据库调用一个语句。如果您需要将它们作为事务的一部分,那么在完成时请为数据库调用'BEGIN'和'COMMIT' /'ROLLBACK'(假设您使用的是支持事务的引擎) – 2012-07-17 18:01:52

回答

3

您不能在PHP中使用MySQL驱动程序在单个查询()调用中发出两个查询。这是针对某些形式的SQL injection攻击的安全措施 - 您的代码易受攻击(除非您正在执行mysql_real_escape_string()或类似的操作)。

您还错过了一个;来分隔两个查询。

多查询语法

query1; query2; query3; etc... 

你已经基本上得到了

query1 query2 

这是一个简单的语法错误。