[英]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
)参考location
( id
)在更新级联时删除级联
有人可以帮忙吗?
您的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.