Php MySQL:无法添加或更新子行:在Codeigniter中将我的数据插入数据库时,外键约束失败
我遇到如下错误:无法添加或更新子行:当使用Codeigniter将数据插入数据库phpmyadmin时,外键约束失败 这是我的错误消息:Php MySQL:无法添加或更新子行:在Codeigniter中将我的数据插入数据库时,外键约束失败,php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,我遇到如下错误:无法添加或更新子行:当使用Codeigniter将数据插入数据库phpmyadmin时,外键约束失败 这是我的错误消息: 无法添加或更新子行:外键约束失败(tugasakhirtb\u pasien,约束tb\u pasien\u ibfk\u 1外键(kode\u pasien)引用tb\u jk(kode\u jk)在更新级联时删除级联) 插入tb\u pasien(nama\u pasien,email\u pasien,username,password,alamat\
无法添加或更新子行:外键约束失败(
tugasakhir
tb\u pasien
,约束tb\u pasien\u ibfk\u 1
外键(kode\u pasien
)引用tb\u jk
(kode\u jk
)在更新级联时删除级联)
插入tb\u pasien
(nama\u pasien
,email\u pasien
,username
,password
,alamat\u pasien
,tangal\u lahir
,umur
,kode\u jk
,无电话号码
)值(‘南都’,’gustiayuri@gmail.com","南道库","827ccb0eea8a706c4c34a16891f84e7b","达隆","1995年11月12日","21","L
这是我的控制器:
型号:
查看
在插入tb_pasien之前,必须在tb_jk表中提供kode_jk值。注意:外键和引用中指定的子表和父表中的列数必须相同,并且数据类型也必须相同 表“tb_pasien”:
CREATE TABLE `tb_pasien` (
`kode_pasien` int(11) NOT NULL AUTO_INCREMENT,
`nama_pasien` varchar(20) NOT NULL,
`email_pasien` varchar(20) NOT NULL,
`username` varchar(20) NOT NULL,
`password` varchar(255) NOT NULL,
`alamat_pasien` text NOT NULL,
`tanggal_lahir` date NOT NULL,
`umur` int(2) NOT NULL,
`kode_jk` int(11) NOT NULL,
`no_telp` int(20) NOT NULL,
`no_antrian` int(3) NOT NULL,
PRIMARY KEY (`kode_pasien`),
CONSTRAINT `tb_pasien_ibfk_1` FOREIGN KEY (`kode_jk`) REFERENCES `tb_jk` (`kode_jk`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
CREATE TABLE `tb_jk` (
`kode_jk` int(11) NOT NULL AUTO_INCREMENT,
`nama_jk` varchar(1) NOT NULL,
PRIMARY KEY (`kode_jk`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
确保在子表之前插入主表。
您还可以在插入中禁止外键检查。在我的例子中,将设置外键的字段名添加到“允许的\u字段”模型中的数组,修复了问题。我已经在我的tb_jk上插入了值。检查我的帖子,我编辑了它。@abhay你已经用1和2硬编码了它。你从kode_jk中选择了哪个值?我需要从kode_jk在我的tb_pasien上显示L或p。你传递了kode_jk的Laki-Laki值,这是错误的,它必须是int类型,你只能传递kode_jk值已经存在于tb_jk表中。oopps,对不起,我的错误。我已经将其更改为L值。但现在,它显示的是1而不是L。我只想显示L或P,而不是1或2。这是工作,但我的问题现在,我需要在我的tb_pasien上从kode_jk显示L或P,但它一直显示1或2,而不是L或P@pradeep。更改外键如下:CON应变
tb_pasien_ibfk_1
外键('nama_jk')引用tb_jk
('nama_jk'))在更新CASCADE时删除CASCADE嗯,对不起。当我尝试使用phpmyadmin更改它时,它是不允许的。我刚刚意识到为什么它会因为我在视图上的选项值而一直显示1或2 t。不要忘了在tb_pasien中将字段名从kode_jk更改为nama_jk,并将字段的数据类型更改为nama_jk。因此,nama_jk将是首选钥匙?但这不是很奇怪吗?
function insert_entry($data_pasien, $data_jk) {
$this->db->insert('tb_pasien', $data_pasien);
$data_pasien['kode_jk'] = $this->db->insert_id();
$this->db->insert('nama_jk', $data_pasien);
}
<!-- form start -->
<form role="form" action="<?php echo base_url().'index.php/a_controller/tambahmanual' ?>" method="post">
<div class="box-body">
<div class="form-group">
<label for="exampleInputNama">Nama Pasien</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" name="nama_pasien" id="exampleInputNama" placeholder="Nama Pasien">
</div>
</div>
<div class="form-group">
<label for="exampleInputEmail">Email Pasien</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
<input type="text" class="form-control" name="email_pasien" id="exampleInputEmail" placeholder="Email Pasien">
</div>
</div>
<div class="form-group">
<label for="exampleInputUsername">Username</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" name="username" id="exampleInputUsername" placeholder="Username">
</div>
</div>
<div class="form-group">
<label for="exampleInputPassword">Password</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-key"></i></span>
<input type="text" class="form-control" name="password" id="exampleInputPassword" placeholder="Password">
</div>
</div>
<div class="form-group">
<label for="exampleInputAlamat">Alamat</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-home"></i></span>
<input type="text" class="form-control" name="alamat_pasien" id="exampleInputAlamat" placeholder="Alamat">
</div>
</div>
<div class="form-group">
<label>Tanggal lahir</label>
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="date" name="tanggal_lahir" class="form-control">
</div>
<!-- /.input group -->
</div>
<div class="form-group">
<label for="exampleInputUmur">Umur</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" name="umur" id="exampleInputUmur" placeholder="Umur">
</div>
</div>
<div class="form-group">
<label>Jenis Kelamin</label>
<select name="kode_jk" class="form-control">
<option value="1">L</option>
<option value="2">P</option>
</select>
</div>
<div class="form-group">
<label for="exampleInputTelp">No. Telp</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-phone"></i></span>
<input type="text" class="form-control" name="no_telp" id="exampleInputTelp" placeholder="No. Telp">
</div>
</div>
</div>
<!-- /.box-body -->
<div class="box-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
CREATE TABLE `tb_pasien` (
`kode_pasien` int(11) NOT NULL AUTO_INCREMENT,
`nama_pasien` varchar(20) NOT NULL,
`email_pasien` varchar(20) NOT NULL,
`username` varchar(20) NOT NULL,
`password` varchar(255) NOT NULL,
`alamat_pasien` text NOT NULL,
`tanggal_lahir` date NOT NULL,
`umur` int(2) NOT NULL,
`kode_jk` int(11) NOT NULL,
`no_telp` int(20) NOT NULL,
`no_antrian` int(3) NOT NULL,
PRIMARY KEY (`kode_pasien`),
CONSTRAINT `tb_pasien_ibfk_1` FOREIGN KEY (`kode_jk`) REFERENCES `tb_jk` (`kode_jk`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
CREATE TABLE `tb_jk` (
`kode_jk` int(11) NOT NULL AUTO_INCREMENT,
`nama_jk` varchar(1) NOT NULL,
PRIMARY KEY (`kode_jk`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1