插入新数据后,旧数据在 MySql CodeIgniter 4 上被删除
After insert new data, the old data got deleted on MySql CodeIgniter 4
你好,我是堆栈溢出、codeigniter 4 的新手,对 mysql 没有足够的经验。
我第一次插入数据时遇到问题,数据显示在 table 上,但当我第二次插入数据时,我的第一个数据和第二个数据都被删除了。
这是我的 tablesupp 查询(我导出了 table,我在创建它时没有使用查询语法)
-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Mar 25, 2022 at 03:12 AM
-- Server version: 10.4.21-MariaDB
-- PHP Version: 7.3.30
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `simstok`
--
-- --------------------------------------------------------
--
-- Table structure for table `tablesupp`
--
CREATE TABLE `tablesupp` (
`idSupp` int(11) NOT NULL,
`namaSupp` varchar(75) NOT NULL,
`alamatSupp` varchar(125) NOT NULL,
`noTelpSupp` varchar(14) NOT NULL,
`Keterangan` varchar(125) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tablesupp`
--
ALTER TABLE `tablesupp`
ADD PRIMARY KEY (`idSupp`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tablesupp`
--
ALTER TABLE `tablesupp`
MODIFY `idSupp` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=32;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
我在控制器(供应商)上的插入方法
public function save()
{
$this->supplierModel->save([
'namaSupp' => $this->request->getVar('inputNamaSupp'),
'alamatSupp' => $this->request->getVar('inputAlamatSupp'),
'noTelpSupp' => $this->request->getVar('inputNoTelpSupp'),
'Keterangan' => $this->request->getVar('deskripsi')
]);
return redirect()->to(base_url('supplier'));;
}
查看供应商时我的表格
<form action="/saveSupp" method="POST">
<?= csrf_field(); ?>
<div class="form-group">
<label for="inputNamaUnit">Nama Supplier</label>
<input type="text" class="form-control" name="inputNamaSupp" id="inputNamaSupp" aria-describedby="inputNamaSuppHelp">
</div>
<div class="form-group">
<label for="inputNamaUnit">Alamat Supplier</label>
<input type="text" class="form-control" name="inputAlamatSupp" id="inputAlamatSupp" aria-describedby="inputAlamatSupp">
</div>
<div class="form-group">
<label for="inputNamaUnit">No Telepon</label>
<input type="text" class="form-control" name="inputNoTelpSupp" id="inputNoTelpSupp" aria-describedby="inputNoTelpSuppHelp">
</div>
<div class="form-floating">
<label for="floatingTextarea2">Keterangan</label>
<textarea class="form-control" name="deskripsi" placeholder="Deskripsi (optional)" id="floatingTextarea2" style="height: 100px"></textarea>
</div>
<div class="modal-footer">
<button class="btn btn-light" type="button" data-dismiss="modal">Close</button>
<button class="btn btn-primary" type="submit">Save</button>
</div>
</form>
我的模型
<?php
namespace App\Models;
use CodeIgniter\Model;
class supplierModel extends Model
{
protected $table = 'tablesupp';
protected $primaryKey = 'idSupp';
protected $allowedFields = ['namaSupp', 'alamatSupp', 'noTelpSupp', 'Keterangan'];
}
路线
$routes->add('/saveSupp', 'Supplier::save');
在此先感谢那些想要帮助我的人。 :)
我预计我插入的数据 table 在我插入后不会被删除
在 save() 方法的状态下使用 insert() 方法
在控制器中:
$myModel = new supplierModel();
$data = [
'namaSupp' => $this->request->getVar('inputNamaSupp'),
'alamatSupp' => $this->request->getVar('inputAlamatSupp'),
'noTelpSupp' => $this->request->getVar('inputNoTelpSupp'),
'Keterangan' => $this->request->getVar('deskripsi')
]
$myModel->insert($data)
如果上述方法没有做太多,请在您的数据库和模型中添加这 3 个字段('created_at'、'updated_at'、'deleted_at'),就像下面这样:
在模型中
protected $table = 'tablesupp';
protected $primaryKey = 'idSupp';
protected $allowedFields = ['namaSupp', 'alamatSupp', 'noTelpSupp',
'Keterangan'];
protected $useAutoIncrement = true;
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
created_at 必须是 curent_timestamp , updated_at 和 deleted_at 可以是 Text
我已经自己解决了这个问题。
对不起伙计们,我在查看文件时犯了一个愚蠢的错误
我忘了给你看删除按钮代码,我使用了使用标签实现它的 http 方法欺骗,然后我忘了关闭标签。
所以代码就像这样:
<form>
<button>DELETE</button>
<form>
INPUT DATA FORM
</form>
结论是,当我点击保存按钮时,它会自动执行删除按钮,因为它在同一个标签中
谢谢那些想要帮助我的人。 (对不起我的英语,真的很糟糕 :D)
你好,我是堆栈溢出、codeigniter 4 的新手,对 mysql 没有足够的经验。 我第一次插入数据时遇到问题,数据显示在 table 上,但当我第二次插入数据时,我的第一个数据和第二个数据都被删除了。
这是我的 tablesupp 查询(我导出了 table,我在创建它时没有使用查询语法)
-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Mar 25, 2022 at 03:12 AM
-- Server version: 10.4.21-MariaDB
-- PHP Version: 7.3.30
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `simstok`
--
-- --------------------------------------------------------
--
-- Table structure for table `tablesupp`
--
CREATE TABLE `tablesupp` (
`idSupp` int(11) NOT NULL,
`namaSupp` varchar(75) NOT NULL,
`alamatSupp` varchar(125) NOT NULL,
`noTelpSupp` varchar(14) NOT NULL,
`Keterangan` varchar(125) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tablesupp`
--
ALTER TABLE `tablesupp`
ADD PRIMARY KEY (`idSupp`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tablesupp`
--
ALTER TABLE `tablesupp`
MODIFY `idSupp` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=32;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
我在控制器(供应商)上的插入方法
public function save()
{
$this->supplierModel->save([
'namaSupp' => $this->request->getVar('inputNamaSupp'),
'alamatSupp' => $this->request->getVar('inputAlamatSupp'),
'noTelpSupp' => $this->request->getVar('inputNoTelpSupp'),
'Keterangan' => $this->request->getVar('deskripsi')
]);
return redirect()->to(base_url('supplier'));;
}
查看供应商时我的表格
<form action="/saveSupp" method="POST">
<?= csrf_field(); ?>
<div class="form-group">
<label for="inputNamaUnit">Nama Supplier</label>
<input type="text" class="form-control" name="inputNamaSupp" id="inputNamaSupp" aria-describedby="inputNamaSuppHelp">
</div>
<div class="form-group">
<label for="inputNamaUnit">Alamat Supplier</label>
<input type="text" class="form-control" name="inputAlamatSupp" id="inputAlamatSupp" aria-describedby="inputAlamatSupp">
</div>
<div class="form-group">
<label for="inputNamaUnit">No Telepon</label>
<input type="text" class="form-control" name="inputNoTelpSupp" id="inputNoTelpSupp" aria-describedby="inputNoTelpSuppHelp">
</div>
<div class="form-floating">
<label for="floatingTextarea2">Keterangan</label>
<textarea class="form-control" name="deskripsi" placeholder="Deskripsi (optional)" id="floatingTextarea2" style="height: 100px"></textarea>
</div>
<div class="modal-footer">
<button class="btn btn-light" type="button" data-dismiss="modal">Close</button>
<button class="btn btn-primary" type="submit">Save</button>
</div>
</form>
我的模型
<?php
namespace App\Models;
use CodeIgniter\Model;
class supplierModel extends Model
{
protected $table = 'tablesupp';
protected $primaryKey = 'idSupp';
protected $allowedFields = ['namaSupp', 'alamatSupp', 'noTelpSupp', 'Keterangan'];
}
路线
$routes->add('/saveSupp', 'Supplier::save');
在此先感谢那些想要帮助我的人。 :)
我预计我插入的数据 table 在我插入后不会被删除
在 save() 方法的状态下使用 insert() 方法
在控制器中:
$myModel = new supplierModel();
$data = [
'namaSupp' => $this->request->getVar('inputNamaSupp'),
'alamatSupp' => $this->request->getVar('inputAlamatSupp'),
'noTelpSupp' => $this->request->getVar('inputNoTelpSupp'),
'Keterangan' => $this->request->getVar('deskripsi')
]
$myModel->insert($data)
如果上述方法没有做太多,请在您的数据库和模型中添加这 3 个字段('created_at'、'updated_at'、'deleted_at'),就像下面这样:
在模型中
protected $table = 'tablesupp';
protected $primaryKey = 'idSupp';
protected $allowedFields = ['namaSupp', 'alamatSupp', 'noTelpSupp',
'Keterangan'];
protected $useAutoIncrement = true;
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
created_at 必须是 curent_timestamp , updated_at 和 deleted_at 可以是 Text
我已经自己解决了这个问题。 对不起伙计们,我在查看文件时犯了一个愚蠢的错误 我忘了给你看删除按钮代码,我使用了使用标签实现它的 http 方法欺骗,然后我忘了关闭标签。 所以代码就像这样:
<form>
<button>DELETE</button>
<form>
INPUT DATA FORM
</form>
结论是,当我点击保存按钮时,它会自动执行删除按钮,因为它在同一个标签中
谢谢那些想要帮助我的人。 (对不起我的英语,真的很糟糕 :D)