Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter从选择下拉列表更新数据库数据_Php_Codeigniter - Fatal编程技术网

Php Codeigniter从选择下拉列表更新数据库数据

Php Codeigniter从选择下拉列表更新数据库数据,php,codeigniter,Php,Codeigniter,我正在尝试从“选择”下拉列表中更新数据库名称 这就是我到目前为止所做的: 视图(exammenu\u view.php) 我得到了这个错误: A Database Error Occurred You must use the "set" method to update an entry. Filename: models/Exam_model.php 我试过很多东西,但我不知道如何才能让它正常工作。任何帮助都将不胜感激。您看到的错误源于传递给更新表的变量格式不正确。在editExam模型函

我正在尝试从“选择”下拉列表中更新数据库名称

这就是我到目前为止所做的:

视图(exammenu\u view.php)

我得到了这个错误:

A Database Error Occurred
You must use the "set" method to update an entry.
Filename: models/Exam_model.php

我试过很多东西,但我不知道如何才能让它正常工作。任何帮助都将不胜感激。

您看到的错误源于传递给更新表的变量格式不正确。在editExam模型函数中,传递$id变量以更新列,但它不包含数组格式

您可以使用:

$data2 = array('table_column_name' => 'dname');
然后将其传递给函数

function editExam($id, $data2){
    $this->db->where('exam_id', $id);
    $this->db->update('exam', $data2);
}
改变

 $data = $this->input->post('dname');
 $this->exam_model->editExam($data);

然后更改editExam函数

function editExam($exam_id, $data)
{
    $this->db->where('exam_id', $exam_id);
    $this->db->update('exam', $data);
}
看法


谢谢你的回复。不幸的是,它不起作用。我得到了以下错误:Exam_model::editExam()文件名:models/Exam_model.php消息:数组到字符串转换文件名:database/DB_query_builder.php消息:未定义变量:数据文件名:models/Exam_model.php必须使用“set”方法更新条目。文件名:models/Exam\u model.php模型中的哪个方法是从您的测试中执行的?您是指实际的测试还是我刚刚测试的?我对编程和PHPIf有点陌生,如果它说editExam()函数中缺少参数2,那么函数头中缺少$data参数。仔细检查要传递的参数数量,并在函数头中匹配该数量。我重新编辑了我的帖子,因为您已经在控制器中使用了$数据。对于测试,我想知道您正在执行什么样的测试用例,以便我能够正确地跟踪代码。谢谢您的回复。它确实帮助了我。我重新排列了我的代码,并修复了它。我将在下面发布答案
$this->db->update('exam',$id)??您想更新什么?@shaiful islam我想从“选择”下拉列表中获取考试名称,并将该考试名称替换为下表中的考试名称,然后用“Wijzigen”按钮发布该信息,该按钮在荷兰语中表示更改。感谢您的回复。它给出了以下错误:消息:未定义变量:exam_id(在控制器中),您必须使用“set”方法更新条目(在模型中)
function editExam($id, $data2){
    $this->db->where('exam_id', $id);
    $this->db->update('exam', $data2);
}
 $data = $this->input->post('dname');
 $this->exam_model->editExam($data);
$data = $this->input->post('update');
$this->exam_model->editExam($data,$exam_id);
function editExam($exam_id, $data)
{
    $this->db->where('exam_id', $exam_id);
    $this->db->update('exam', $data);
}
<form name='selectexam' action="<?php echo base_url() . "index.php/exam/select/";?>" method='post'>   
    <div class="form-group">
        <select class="form-control" name="exam_id">
        <?php 
        foreach($exams as $row)
        { 
        echo '<option value="'.$row->exam_id.'">'.$row->examname.'</option>';
        }
        ?>
        </select>
    </div>
    <label>Examen wijzigen</label>
    <div class="form-group"><input type="text" name="update" class="form-control" placeholder="Examennaam"></div>
    <div class="form-group">
        <input type="submit" name="sbm" value="Wijzigen" class="btn btn-info" />
        <input type="submit" name="sbm" value="Verwijderen" class="btn btn-info" />
</div>
</form>
function select() {
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($this->input->post('sbm') == 'Verwijderen') { 
    $exam_id = $_POST['exam_id'];   
    $this->exam_model->removeExam($exam_id);

    if(!empty($exam_id)){
        $this->session->set_flashdata('del','<div class="alert alert-success text-center">Examen verwijderd.</div>'); }
    elseif(empty($exam_id)){
        $this->session->set_flashdata('del','<div class="alert alert-warning text-center">Er zijn geen examens gevonden om te verwijderen.</div>');  
    }
    redirect('/exam/');
}

    elseif($this->input->post('sbm') == "Wijzigen") {
        $data2 = array(
            'examname' => $this->input->post ('update'),
        );
        $id = $_POST['exam_id'];
        $this->exam_model->editExam($id, $data2);
        $this->exam_model->getExamName();
    }
    redirect('/exam/');
    }
}
function getExamName(){
    $query = $this->db->query('SELECT exam_id, examname FROM exam');
    return $query->result();
}  

function removeExam($id){
    $this->db->where('exam_id', $id);
    $this->db->delete('exam');
} 

function editExam($id, $data2){
    $this->db->where('exam_id', $id);
    $this->db->update('exam', $data2);
}