【问题标题】:Need help to fetch data from database in php codeigntier需要帮助从 php codeigniter 中的数据库中获取数据
【发布时间】:2019-10-24 12:09:48
【问题描述】:

我正在尝试在 php codeigniter 中构建一个项目。但我坚持从数据库中获取数据。

我正在使用 mysql、codeigniter-3.1.10 和 php-7.0.33。

数据库配置文件:

    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '221b',
    'database' => 'car',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

我的模特是

if (defined('BASEPATH') OR exit ('No direct script access allowed'));
    class Homepage_model extends CI_Model{
        public $result;
        public $rs;

        public function __construct(){
            parent::__construct();
            $this->load->database();

        }

        public function get_data($slug = FALSE){
            if ($slug === FALSE) {
                $query = $this->db->get('cars');
                return $query->result_array();
            }

            $query = $this->db->get_where('cars', array('status' => "Available"));
            return $query->row_array();
        }
    }

在模型文件中,当数据库字段“status”的值为“Available”时,我想从表中获取所有数据。 控制器文件:

defined('BASEPATH') OR exit('No direct script access allowed');

class Homepage extends CI_Controller{
    public function __construct(){
        parent::__construct();
    }
    public function index(){
        $this->load->model('Homepage_model');
        $rs = $this->Homepage_model->get_data();
        $this->load->view('homepage_view', $rs);

    }
}

我要显示数据的视图部分是:

                foreach($rs as $rws){
                    //echo $rws['car_id'];

            ?>
                <li>
                    <?php echo $rws['car_id'];?>
                    <a href="book_car.php?id=<?php echo $rws['car_id'] ?>">
                        <img class="thumb" src="cars/<?php echo $rws['image'];?>" width="300" height="200">
                    </a>
                    <span class="price"><?php echo 'Kshs.'.$rws['hire_cost'];?></span>
                    <div class="property_details">
                        <h1>
                            <a href="book_car.php?id=<?php echo $rws['car_id'] ?>"><?php echo 'Car Make>'.$rws['car_type'];?></a>
                        </h1>
                        <h2>Car Name/Model: <span class="property_size"><?php echo $rws['car_name'];?></span></h2>
                    </div>
                </li>
            <?php
                }
            ?>

我已经做到了。但是当我浏览网页时,没有显示这些数据。请帮忙解决这个问题。

【问题讨论】:

  • get_data 中你没有传递slug 参数,所以第二个结果将返回并且该结果是row_array` 所以你不能在foreach 中使用它所以返回result_array()而不是row_array()
  • 我已将 row_array() 更改为 result_array(),但没有任何反应。
  • 打印是否从数据库获取数据的响应。

标签: php codeigniter


【解决方案1】:

在你的控制器函数中 通过$data$this-&gt;load-&gt;view('homepage_view', $data);之类的变量

public function index(){
    $this->load->model('Homepage_model');
    $result = $this->Homepage_model->get_data();
    $data['rs'] =  $result; 
    $this->load->view('homepage_view', $data);
}

【讨论】:

  • 现在 $rs 变量将在视图文件中可用
【解决方案2】:

这里在查询中改了

$query = $this->db->get_where('cars', array('status' => "Available"))->result_array();
return $query;

【讨论】:

    【解决方案3】:

    只需将$row_array() 更改为$result_array()

    return $this->db->get_where('cars', array('status' => "Available"))->result_array();
    

    row_array()用于只取一条,而$result_array()所有记录以关联数组的形式出现

    阅读更多关于row arrayresult array的信息

    【讨论】:

      【解决方案4】:

      在模型中

      public function get_data($slug = FALSE){
          if ($slug === FALSE) {
              $query = $this->db->get('cars');
              return $query->result_array();
          }
      
          $query = $this->db->get_where('cars', array('status' => "Available"));
          $result = $query->result_array(); # change
          return $result; # change
      }
      

      在控制器中

      public function index(){
          $this->load->model('Homepage_model');
          $result = $this->Homepage_model->get_data();
          $data['rs'] =  $result; # or  $data['rs']  = $this->Homepage_model->get_data(); assign directly 
          $this->load->view('homepage_view', $rs);
      }
      

      并且 在视图中 foreach($rs as $rws){ 将起作用

      确保表格不为空。

      【讨论】:

      • 在控制器中如果我写这个$this-&gt;load-&gt;view('homepage_view', $rs); 这会给我一个错误“未定义的变量:rs”,如果我写这个$this-&gt;load-&gt;view('homepage_view', $data['rs']); 这什么都没有显示。
      • @Sharif 使用我发布的$result = $this-&gt;Homepage_model-&gt;get_data(); $data['rs'] = $result;
      • 我照你说的做了。但这会发生“消息:未定义的变量:rs”
      • Abdulla,请尽量避免使用引用/引用格式,除非您提供的材料是引用。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多