【问题标题】:FOREIGN KEY ..again外键..再次
【发布时间】:2016-04-04 06:06:42
【问题描述】:

我已阅读并搜索了所有网站,但没有发现对我有用...所以请帮助新手了解他做错了什么。

所以我正在尝试创建一个添加到收藏夹功能。 我需要创建 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();

?>

【问题讨论】:

  • 您遇到错误的地方。请附上您的错误信息。
  • 给新手的建议 - 不要学习如何使用 mysql() 进行查询 - 这已被弃用,并且不如使用 PDO 安全 - 尝试了解这一点并避免以后让自己头疼试图转变你的想法。
  • 对不起,我没有收到错误信息,但它不会创建第三个表。
  • 那你怎么知道错误和外键有关?
  • 请直接对 mysql 运行第三个表查询,因为它会显示错误消息,您可以得到更好的主意。

标签: php mysql foreign-keys


【解决方案1】:

外键引用不存在的表。
这些表的名称为user<b>s</b>product<b>s</b>,而第三个表将它们称为userproduct(单数)。

【讨论】:

  • 确实有问题的是用户中的用户ID,它不是主键。非常感谢您的帮助!
【解决方案2】:

“user”表的“userid”必须为主键。

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多