php - 所有数据库记录都得到更新,而不是只有 1 个 CodeIgniter 4
问题描述
我正在做一个学校项目。
我的 Users.php 控制器中有一个 validateUser 函数:
public function validateUser()
{
$data = [];
UserModel::validateUser($this->request->getPost('id_user')); // validate the user
if (session()->get('success'))
{
return redirect()->to('admin_panel');
}
else
{
echo view('templates/header', $data);
echo view('admin_panel2',$data);
echo view('templates/footer');
}
}}
这是我的 UserModel.php 中的 validateUser 函数
public static function validateUser($id_user)
{
$model = new UserModel();
$data = ['id_role' => '2'];
$model->update($id_user,$data);
session()->setFlashdata('success', 'Successfuly Validated');
}
我的观点
<div class="container">
<div class="row">
<div class="col-12">
<div class="container">
<p></p>
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h6 class="panel-title">
<a data-toggle="collapse" href="#collapse1">
<?php
echo "<h3>Users To Validate</h3>";
?>
</a>
<?php
?>
</h6>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="panel-body">
<h4></h4>
<ol>
<div class="container">
<div class="row">
<div class="col-12 col-sm8- offset-sm-2 col-md-6 offset-md-3 mt-5 pt-3 pb-3 bg-white form-wrapper">
<div class="container">
<?php if (session()->get('success')) : ?>
<div class="alert alert-success" role="alert">
<?= session()->get('success') ?>
</div>
<?php endif; ?>
<?php foreach ($usersToValidate as $row)
echo '<li class="nav-item">' . $row->firstname . ' ' . $row->lastname . '<a class="nav-link active" href="validate_user?id_user='.$row->id_user.'">Validate</a></li>';
?>
<ul class="nav">
</ul>
</div>
</div>
</div>
</div>
</ol>
</div>
<div class="panel-footer">
</div>
</div>
</div>
</div>
</div>
<div class="container">
<hr>
<?php if (isset($permissions)) : ?>
<div class="col-12">
<div class="alert alert-danger" role="alert">
</div>
</div>
<?php else : ?>
<?php endif; ?>
<?php if (isset($validation)) : ?>
<div class="col-12">
<div class="alert alert-danger" role="alert">
<?= $validation->listErrors() ?>
</div>
</div>
<?php else : ?>
<?php endif; ?>
</div>
</div>
</div>
问题是在我的“用户”表中,所有“id_role”记录都更改为“2”。我只想更新数据库中的一条记录。
知道我做错了什么吗?
解决方案
我发现了这个问题。我在控制器函数中用 getGet('id_user') 替换了 $this->request->getPost('id_user')
public function validateUser()
{
$data = [];
UserModel::validateUser($this->request->getGet('id_user')); // validate the user
if (session()->get('success'))
{
return redirect()->to('admin_panel');
}
else
{
echo view('templates/header', $data);
echo view('admin_panel2',$data);
echo view('templates/footer');
}
}
推荐阅读
- c# - 使用 C# .Net 和 Ghostscript 从 PDF 中裁剪或修剪部分
- python-3.x - 类型错误:+ 不支持的操作数类型:“工作表”和“整数”
- amazon-web-services - EC2 实例无法使用其公共 DNS 在特定端口上访问
- c - 写入文件时的“访问冲突写入位置”
- python - Spark UDF 导致作业中止
- javascript - 必须按下按钮才能激活 php 代码?
- javascript - onClick 按钮不执行表单内的功能[不是类型=提交问题]
- firebase - Firestore 规则限制:firestore.rules 文件的最大文件大小为 64KB。怎么办?
- python - 需要正则表达式来仅识别字母数字
- excel - 带有 if 和 then 的电子表格的条件格式