2010-03-15 225 views
1

基本上,我有3個表;用戶和項目,然後我有'users_projects'允許一對多編隊。當用戶添加一個項目時,我需要存儲項目信息,然後在usersprojects表中存儲'userid'和'projectid'。這聽起來像是非常簡單的,但是我認爲語法有問題!?多次運行MySQL INSERT查詢(將值插入多個表)

既然這樣,我有這個作爲我的INSERT查詢(值進入2頁不同的表):

$projectid = $_POST['projectid']; 
    $pname = $_POST['pname']; 
    $pdeadline = $_POST['pdeadline']; 
    $pdetails = $_POST['pdetails']; 

    $userid = $_POST['userid']; 

$sql = "INSERT INTO projects (projectid, pname, pdeadline, pdetails) VALUES 
    ('{$projectid}','{$pname}','{$pdeadline}','{$pdetails}')"; 


$sql = "INSERT INTO users_projects (userid, projectid) VALUES 
    ('{$userid}','{$projectid}')"; 

$result = mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 
header("Location: frontview.php"); 
exit(); 
+1

查詢本身(除了SQL注入問題)似乎沒有問題。這可能有助於查看更多源代碼來查看查詢的執行方式。 – Kibbee 2010-03-15 17:37:55

+0

我已根據要求更新了此問題,並提供了更多信息! – Yvonne 2010-03-15 18:11:19

+0

項目ID是否正確進入項目表?它在兩個查詢之間不會改變,因此您可能需要檢查usersprojects表並確保您使用正確的類型定義了第二列。 – 2010-03-15 18:15:58

回答

1

你根本都忘了執行每個查詢的SQL。添加

mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 

每個查詢和你應該沒問題。

b.t.w(1)它總是有幫助的上的SQL日誌與tail -f打開控制檯測試(/var/log/mysql/下)
b.t.w.(2)你在你的代碼重安全問題。
b.t.w(3)您可能要考慮使用PDO/Mysqli而不是舊的mysql擴展。 (4)這會讓你的生活變得更簡單,使用某種類型的包裝(一個好的類)來接近數據庫,而不是直接在你的代碼中執行。

+0

我已更新的問題,包括所有的代碼 – Yvonne 2010-03-15 17:58:40

0

是的,我會檢查的兩件事是

1)是否正在執行查詢?像提到的其他海報一樣,你是否在設置SQL之間執行SQL查詢? 2)如果你打印/調試/顯示你插入的變量,它們是否被填充?如果你看到插入的東西,但有些數據是空白的,那麼在此之前可能會有些東西被炸燬,而這些變量將是空白的。

+0

你可以再看看,我已經添加更多信息的帖子,我認爲這是我沒有執行查詢每次像你說的... – Yvonne 2010-03-15 17:57:20

+0

嗨,你知道我怎麼能做到這一點?(打印或調試)變量?它只有項目ID沒有被存儲在用戶項目表中,所以關閉!!! – Yvonne 2010-03-15 18:45:33

0

我可能會誤解,但你把標題(「位置:main.php」);在你的腳本中間?

+0

沒有抱歉我沒有當我編輯上面的示例代碼時,這是一瞬間!這將是相當embaressing :) – Yvonne 2010-03-15 18:19:41

0
$projectid=mysql_insert_id($connection); 

我叫這是我第一次查詢後,這將從您的項目表中獲取自動增量值並將其存儲在$專案編號,然後第二個查詢會使用它。 所以執行我的第一個查詢後,我把上面的代碼放在那裏,而不需要改變任何東西!

0

您似乎試圖只執行一次mysql_query()。你有兩個查詢,因此它需要使用兩次,一次在每個查詢:

$sql = "INSERT INTO projects (projectid, projectname, projectdeadline, projectdetails) VALUES 
    ('{$projectid}','{$projectname}','{$projectdeadline}','{$projectdetails}')"; 
$result = mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 

$sql = "INSERT INTO usersprojects (userid, projectid) VALUES 
    ('{$userid}','{$projectid}')"; 
$result = mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 

或者,你可以使用mysqli_multi_query(),但可能會需要你的代碼的重寫顯著使用mysqli接口。