所有数据库记录都会更新,而不是只有 1 个 CodeIgniter 4

时间:2021-01-05 16:09:04

标签: php database codeigniter

我正在做一个学校项目。

我的 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>

问题是在我的“users”表中,所有“id_role”记录都更改为“2”。我只想更新数据库中的单个记录。

知道我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。我在控制器函数中用 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');
    }
}