我是一个PHP和MySQL的新手,所以我需要一些帮助来纠正我的代码。从一个表插入一个主键作为外键到另一个表用PHP lastInsertId()
我有两个表 - 人和等级 第一个表中的列ID(自动递增),名,姓。 第二列有id(自动增量),personId,等级。 PersonId拥有一个外键,它是人表中的主键。
我插入的数据与窗体中的表,然后让PHP代码来处理数据,并将其插入到我的表:
然后我尝试从人插入一个ID等级为为person_id使用lastInsert()来获取ID:
$insertIdSQL = <<<EOT
INSERT INTO grade (personId)
VALUES (:personId);
EOT;
$insertIDStatement = $db -> prepare($insertIdSQL);
$lastId = $db->lastInsertId();
$insertIDStatement -> execute([
':personId' => $lastId,
]);
然而,当我尝试填写表格等级为person_id得到0值的形式,列的其余均为正常。 当我调试并回显$ lastId的值时,它显示正确。
代码有什么问题?如何纠正是为了正确插入外键?
我的第一个想法是你的问题是外键列person_id是不是与主键相同的类型。请你可以粘贴你的数据库表列? – Greg
都是int(11),我仔细检查过 – lessismore
你有两个列(personId'和'grade)的默认值吗? – Marcus