2012-07-17 47 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 

這是一個簡單的語法錯誤。