我是一個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