2009-07-06 86 views
0

在MySQL中創建一個參考表我PHP創建兩個MySQL表,使用的代碼如下:問題使用PHP

$sql = "CREATE TABLE qotwMember 
(
MemberId NOT NULL PRIMARY KEY, 
Name varchar(255), 
Passwork varchar(255), 
emailId varchar(255), 
)"; 


$sql = "CREATE TABLE qotwQuestion1111 
(
QuestionId NOT NULL AUTO_INCREMENT, 
Question varchar(5000), 
MemberId varchar(255) FOREIGN KEY fkname REFERENCES qotwMember(MemberId), 
PostDate date, 
Vote int, 
PRIMARY KEY (QuestionId) 
)"; 
mysql_query($sql,$con); 

然後我嘗試將數據插入到這些表。在qotwMember表中,數據被輸入,但是當我嘗試將數據插入到qotwQuestion1111表中時,它給了我錯誤「Error:Table'database1.qotwQuestion1111'does not exist」

我弄不明白我在這裏做錯了什麼。請幫我解決這個問題。

注意:這兩個表格都是在不同的php中創建的。

問候 Zeeshan

+0

我在最後一句話中假設你說「兩個表格都是用不同的php創建的」。你的意思是在不同的PHP文件中?雖然我不確定,但我不想編輯它。 – 2009-07-06 14:14:33

回答

0

確定每次都選擇正確的數據庫?請參閱:mysql_select_db()

+0

是的...我使用正確的數據庫...如果我從第二個表中刪除REFERENCE標記和AUTO INCREMENT ..它工作正常 – 2009-07-06 14:29:26

0

我懷疑你沒有給我們真正的SQL,因爲這些語句都不會真正起作用 - 你缺少主列的數據類型並且有一些額外的逗號。

如果這是你真正的SQL,然後確保你把or die(mysql_error($con));電話後mysql_query

0

當你創建你的表,它可能是更容易使用MySQL前端,如MySQL query browser而不是試圖運行PHP中的CREATE TABLE語句。我的猜測是你的第二條語句中有一個語法錯誤,所以表沒有被創建。前端會告訴你語法錯誤是什麼。

或者,您可以檢查返回值mysql_query以查看是否有錯誤,然後使用mysql_error()將其讀出。

0

我在MySQL中使用外鍵創建時遇到了同樣的問題(這是您的錯誤所在)。

創建外鍵時,外鍵列和引用列必須具有相同的數據類型和大小。我注意到你沒有給你的主鍵列任何數據類型或大小。這可能是導致你的錯誤的原因。另外,正如其他人所指出的那樣,您使用的引擎也會決定您是否可以使用外鍵。

如果您將'MemberID'聲明爲'MemberID varchar(255)NOT NULL PRIMARY KEY',它應該像現在一樣工作。我會建議總是給你的主鍵列數據類型和可能的大小。我不知道你的表是什麼,但對於只是一個ID的主鍵列,我建議將它作爲某種INT(只記得改變你的外鍵列以反映這種改變)。