当我使用下面的表单更新数据库中的数据时,显示错误跟随错误。如何解决此错误?
Cannot add or update a child row: a foreign key constraint fails
(`nov-cms`.`faqs_cat`, CONSTRAINT `faqs_cat_ibfk_20` FOREIGN KEY (`id`)
REFERENCES `tblfaqs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)'表格:
function editpage_($editid) {
$conn = Doctrine_Manager::connection();
$data['headingtop'] = "FAQ'S > FAQ'S > Edit FAQ'S";
$data['title_faqs'] = "Edit FAQ's";
$data['errormess'] = '';
$title_faqs = addslashes($this->input->post('title_faqs'));
$content = addslashes($this->input->post('editor1'));
$seo_description = addslashes($this->input->post('seo_description'));
$category = $this->input->post('category'); //print_r($category['cate']); exit;
$isActive = $this->input->post('isactive');
$position = $this->input->post('position');
$qryDel2 = $conn->prepare("DELETE from faqs_cat where id='$editid'");
$qryDel2->execute();
$query = $conn->prepare("UPDATE tblfaqs SET title_faqs='$title_faqs',content='$content',isActive='$isActive',position='$position',seo_description='$seo_description' WHERE id='$editid' ");
$query->execute();
$id = $conn->lastInsertId();
//when we add a page this insert a record to table, and this is id of record inserted.. this is a function default of mysql, we use to get last insert id to insert this to orther table...
foreach ($category as $data) {
$query = $conn->prepare("insert into faqs_cat (fc_id, id, category_id) values ('','$id','$data')"); //in this.
$query->execute();
}
$url = 'admin/faqs/';
echo'
<script>
window.location.href = "' . base_url() . $url . '";
</script>
';发布于 2014-10-29 05:53:33
错误在这一行中:
$id = $conn->lastInsertId();具体地说,因为lastInsertId()没有返回值,所以$id保持为空。这会导致约束失败,因为在faqs_cat中插入时需要ID。
如果您试图从数据库中获取自动生成的密钥,则可能需要根据连接到的数据库类型将序列名指定为lastInsertId (例如,Postgres需要序列名)。尝试创建一个名为'mySequence‘的序列,并使用下面的代码:
$id = $conn->lastInsertId('mySequence');https://stackoverflow.com/questions/26491120
复制相似问题