获取数据并在视图页面中显示

时间:2017-03-29 12:20:15

标签: php mysql codeigniter

  

当我在视图页面中执行while循环时,以下错误显示   消息:mysql_fetch_array()期望参数1是资源,给定数组

我的模特

function get_row($id) {
    $this->db->select("*");
    $this->db->from('pending_list');
    $this->db->where('id',$id);
    $query = $this->db->get();
    return $query->result_array();
}

我的控制器

public function pass_print() {
    $id = $this->uri->segment(3);

    $data['h'] = $this->admin_model->get_row($id);
    $this->load->view('header');
    $this->load->view('sidebar');
    $this->load->view('print_pass',$data);
    $this->load->view('footer');
}

我的观点

<?php while($rows= mysql_fetch_array($h)){?>
                                        <div class="form-group">
                                            <label for="inputEmail3" class="col-sm-3 control-label">
                                                Visitors Name</label>
                                            <div class="col-sm-9">
                                                <input type="text" class="form-control" id="inputEmail3" value="<?php $rows['visitor_name']?>" name="visitor" placeholder="Visitors Name">
                                            </div>                                            
                                        </div>
<?php}?>

3 个答案:

答案 0 :(得分:1)

查看部分是错误的。它&#39;应该是

<?php
foreach ($h as $item) {
    ?>
    <div class="form-group">
        <label for="inputEmail3" class="col-sm-3 control-label">
            Visitors Name
        </label>
        <div class="col-sm-9">
            <input type="text" class="form-control" id="inputEmail3" 
            value="<?php echo $item['visitor_name']?>" name="visitor" placeholder="Visitors Name">
        </div>                                            
    </div>
    <?php
}
?>

如果您使用此方法传递数据以查看$this->load->view('print_pass',$data);,则您提到的数组名称$data['h']只能在VIEW中调用。在你的情况下是h

怀疑你的代码是

在控制器中调用$data['h'] = $this->admin_model->get_row($id);但是您添加的模型代码为function select()。确保您正在调用正确的模型方法/功能

答案 1 :(得分:1)

在模型中:您正在定义&#34;选择&#34;模型中的函数未在控制器中调用

function select() {
$this->db->select("emp_name,department");
$this->db->from('employee');
$query = $this->db->get();
return $query->result_array();
}

在Controller中:您需要将所有获取行信息放入名为&#34; $ h&#34;的变量中。用$ h替换$ data [&#39; h&#39;]。

public function pass_print() {
$id = $this->uri->segment(3);
$h = $this->admin_model->get_row($id);
$this->load->view('header');
$this->load->view('sidebar');
$this->load->view('print_pass',$data);
$this->load->view('footer');
} 

在视图中:使用foreach循环代替while循环,它给出了正确的结果。

<?php foreach($h as $data){?>
<div class="form-group">
<label for="inputEmail3" class="col-sm-3 control-label">Visitors Name</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="inputEmail3" value="<?php $data['visitor_name']?>" name="visitor" placeholder="Visitors Name">
</div>                                            
</div>
<?php}?>

答案 2 :(得分:0)

对于模型,您可以改为编写:

$this->db->get_where('pending_list', array('id'=>$id))->row();

对于视图,请使用此代码获取其值:

echo $h->visitor_name;