提问人:Dragonarc 提问时间:11/10/2023 最后编辑:Dragonarc 更新时间:11/11/2023 访问量:50
CodeIgniter 4 - 无法将我的 int 数据插入到我的数据库中
CodeIgniter 4 - Can't insert my int data into my database
问:
我在表单中输入了我的输入,我可以将所有数据输入到控制器中。
视图中的“我的表单”
<form action="/arsip/save" method="post">
<?= csrf_field(); ?>
<div class="mb-3">
<label for="nama_pemegang_hak" class="form-label">Nama Pemegang Hak</label>
<input type="text" name="nama_pemegang_hak" class="form-control <?= $validation->hasError('nama_pemegang_hak') ? 'is-invalid' : ''; ?>" id=" nama_pemegang_hak" value="<?= old('nama_pemegang_hak'); ?>">
</div>
<div class="mb-3">
<label class="form-label" for="nama_hak">Nama Hak</label>
<select class="form-select" id="nama_hak" name="nama_hak">
<option value="Hak Milik">Hak Milik</option>
<option value="Hak Guna Bangunan">Hak Guna Bangunan</option>
<option value="Warkah">Warkah</option>
</select>
</div>
<div class="mb-3">
<label for="nomor_hak" class="form-label">Nomor Hak</label>
<input type="text" name="nomor_hak" class="form-control <?= $validation->hasError('nomor_hak') ? 'is-invalid' : ''; ?>" id="nomor_hak" value="<?= old('nomor_hak'); ?>">
</div>
<div class="mb-3">
<label for="kelurahan" class="form-label">Kelurahan</label>
<input type="text" name="kelurahan" class="form-control <?= $validation->hasError('kelurahan') ? 'is-invalid' : ''; ?>" id="kelurahan" value="<?= old('kelurahan'); ?>">
</div>
<div class="mb-3">
<label for="kecamatan" class="form-label">Kecamatan</label>
<input type="text" name="kecamatan" class="form-control <?= $validation->hasError('kecamatan') ? 'is-invalid' : ''; ?>" id="kecamatan" value="<?= old('kecamatan'); ?>">
</div>
<div class="mb-3">
<label for="no_lemari" class="form-label">Nomor Lemari</label>
<input type="number" name="no_lemari" min="1" class="form-control <?= $validation->hasError('no_lemari') ? 'is-invalid' : ''; ?>" id="no_lemari" value="<?= old('no_lemari'); ?>">
</div>
<div class="mb-3">
<label for="no_rak" class="form-label">Nomor Rak</label>
<input type="number" name="no_rak" min="1" class="form-control <?= $validation->hasError('no_rak') ? 'is-invalid' : ''; ?>" id="no_rak" value="<?= old('no_rak'); ?>">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
所有数据都将收集在我的控制器中。在它通过验证后(它只是必需的,并且is_unique验证),数据将保存在数据库中。一切都很顺利,除了来自 no_lemari 和 no_rak 的数据没有保存到数据库中(在数据库中,即使我的输入不是 0,它也只放了数字 0)。
要保存到数据库中的控制器代码
$this->bukuModel->save([
'nama_pemegang_hak' => $this->request->getVar('nama_pemegang_hak'),
'nama_hak' => $this->request->getVar('nama_hak'),
'nomor_hak' => $this->request->getVar('nomor_hak'),
'kelurahan' => $this->request->getVar('kelurahan'),
'kecamatan' => $this->request->getVar('kecamatan'),
'no_lemari' => intval($this->request->getVar('no_lemari')),
'no_rak' => intval($this->request->getVar('no_rak'))
]);
session()->setFlashdata('pesan', 'Data berhasil ditambahkan.');
return redirect()->to('/arsip/home');
我使用 intval 将数据类型更改为 int(当我使用 dd 检查它时它有效),但数据库中的值仍然是 0。我试过这样做
$nomor_lemari = $this->request->getVar('no_lemari');
$nomor_rak = intval($this->request->getVar('no_rak'));
并将保存中的代码更改为
'no_lemari' => $nomor_lemari,
'no_rak' => $nomor_rak
但没有什么真正改变。谁能告诉我出了什么问题,我需要改变什么?
我的表结构
答:
0赞
Dragonarc
11/11/2023
#1
由于我找不到数据一直为 0 的原因,因此我最终删除了 CI 保存方法并以这种方式保存了我的数据
$db = \Config\Database::connect();
$nama_pemegang_hak = $this->request->getVar('nama_pemegang_hak');
$nama_hak = $this->request->getVar('nama_hak');
$nomor_hak = $this->request->getVar('nomor_hak');
$kelurahan = $this->request->getVar('kelurahan');
$kecamatan = $this->request->getVar('kecamatan');
$no_lemari = (int) $this->request->getVar('no_lemari');
$no_rak = (int) $this->request->getVar('no_rak');
// Execute INSERT SQL query
$db->query(
"INSERT INTO buku (nama_pemegang_hak, nama_hak, nomor_hak, kelurahan, kecamatan, no_lemari, no_rak) VALUES (?, ?, ?, ?, ?, ?, ?)",
[$nama_pemegang_hak, $nama_hak, $nomor_hak, $kelurahan, $kecamatan, $no_lemari, $no_rak]
);
对于我的更新,我只是将这一行添加到我的代码中
$db = \Config\Database::connect();
$db->query("UPDATE buku SET no_lemari = ?, no_rak = ? WHERE id = ?", [$no_lemari, $no_rak, $id]);
所以整个代码变成了这个
$no_lemari = (int)$this->request->getVar('no_lemari');
$no_rak = (int)$this->request->getVar('no_rak');
$this->bukuModel->save([
'id' => $id,
'nama_pemegang_hak' => $this->request->getVar('nama_pemegang_hak'),
'nama_hak' => $this->request->getVar('nama_hak'),
'nomor_hak' => $this->request->getVar('nomor_hak'),
'kelurahan' => $this->request->getVar('kelurahan'),
'kecamatan' => $this->request->getVar('kecamatan'),
'no_lemari' => $no_lemari,
'no_rak' => $no_rak
]);
$db = \Config\Database::connect();
$db->query("UPDATE buku SET no_lemari = ?, no_rak = ? WHERE id = ?", [$no_lemari, $no_rak, $id]);
好吧,所以我基本上只是使用查询暴力破解保存数据。我仍然不太明白这个问题,但强制更新数据是有效的,所以我会使用它,直到有人给我更好的答案
评论
$allowedFields