繁体   English   中英

尝试自动将外键值插入我的mysql表

[英]Trying to automatically insert a foreign key value into my mysql table

我是PHP和MySQL的新手,需要帮助...

我似乎无法理解如何自动将外键插入数据库的表中。 主键在我的“内存”表中添加为“ id”,但我希望将此相同的ID添加到“位置”表的外键中。 谁能帮忙吗?

我有两张桌子

“内存表” ID,用户名,电子邮件。

  |    1    |    2    |    3    |
  |   paul  |   john  | francis |       
  | paul@gm.| john@gm.|francis@.|

“位置表” ID,位置,用户ID <<外键

  |    1    |    2    |    3    |
  |  leeds  |liverpool| london  |       
  |    ?    |    ?    |    ?    | 

如何获取用户表中的“ id”以自动将其作为外键插入此处?

我正在使用此php代码插入数据...

$sql = mysql_query("INSERT INTO mem (username, country, state, city, accounttype, email, password, signupdate) 
        VALUES('$username','$country','$state','$city','$accounttype','$email','$hashedPass', now())")      or die(mysql_error());
$id = mysql_insert_id();

$sql = mysql_query("INSERT INTO location (location) 
VALUES('$location')") or die(mysql_error());
$user_id = mysql_insert_id();

我在提交表单时收到此错误...无法添加或更新子行:外键约束失败( mem location ,CONSTRAINT location_ibfk_1键( user_id )参考locationid )在更新级联时删除级联

有人可以帮忙吗?

您的FK方向错误。 现在它说:“用户表中的每个条目都必须在位置表中具有一个条目。” 您尝试插入用户表中,而不先创建位置条目。 因此FK失败。

解决方案:在位置表“ user_id-> users.user_id”上设置FK,因此这意味着“位置表上的每个user_id在users表中都应有一个条目”。 唯一的问题是:当您删除用户表中的条目时,“ ON DELETE CASCADE”不再起作用...-可以通过数据库触发器(PSEUDOCODE)解决“在从用户中删除之前,请先从用户所在的位置删除用户ID。 ”,或者您只需在PHP中执行2个查询。 (这是更简单的解决方案。第一个删除位置行,第二个删除用户行。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM