2016-04-04 9 views
-2

私はすべてのサイトを読んで検索しましたが、私が見つけたものは何も見つかりません...ので、初心者が間違っていることを理解してください。FOREIGN KEY ..元

お気に入りに追加しようとしています。 テーブルを3つ作成する必要があります。最初の2つは魔法のように機能しましたが、3番目のものは...外字キーで問題が発生しました

エラーメッセージは表示されませんが、3番目のテーブルは作成されません。ここで

は私のコードです:

<?php 

$connect = mysql_connect("127.0.0.1","root",""); 

$db = mysql_select_db("mydb"); 



mysql_query("CREATE TABLE IF NOT EXISTS users 

(
userid bigint, 
firstname varchar(25), 
lastname varchar(15), 
email varchar(250), 
gender varchar(10), 
username varchar(15), 
password varchar(15), 
age int, 
activ boolean, 
date TIMESTAMP NULL default CURRENT_TIMESTAMP 
)ENGINE=INNODB 

"); 


mysql_query("CREATE TABLE IF NOT EXISTS products ( 
    productid int(11) NOT NULL AUTO_INCREMENT, 
    productname varchar(100) NOT NULL, 
    productdescription varchar(250) NOT NULL, 
    price decimal(6,2) NOT NULL, 
    PRIMARY KEY (`productid`) 
) ENGINE=INNODB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 "); 


mysql_query("CREATE TABLE IF NOT EXISTS favorites 
(
    userid bigint NOT NULL, 
    productid int(11) NOT NULL, 
    PRIMARY KEY (userid, productid), 
    FOREIGN KEY (userid) REFERENCES user (userid) ON DELETE CASCADE ON UPDATE CASCADE, 
    FOREIGN KEY (productid) REFERENCES product (productid) ON DELETE CASCADE ON UPDATE CASCADE 
)ENGINE=INNODB 
"); 
echo "The DataBase was successfully created!"; 
mysql_close(); 

?> 
+1

あなたはエラーに直面しています。エラーメッセージを添付してください。 – RJParikh

+1

初心者のためのアドバイス - mysql()を使用してクエリを実行する方法を習得しないでください - これは廃止され、PDOを使用するほど安全ではありません - それを学び、後であなたの思考を変換しようとする頭痛を救いましょう。 – gavgrif

+0

申し訳ありませんが、エラーメッセージは表示されませんが、3番目の表は作成されません。 – Mikael

答えて

0

"user"テーブルの "userid"は主キーでなければなりません。

1

外部キーが存在しないテーブルを参照してください。
テーブルの名前はusersproductsであり、3番目のテーブルはuserproduct(単数)です。

+0

実際に問題が発生したのは、ユーザー内のユーザーIDがプライマリキーではなかったためです。 – Mikael