ginnerpeace 发表于 2014-3-27 16:46:24

http://codeigniter.org.cn/
主页不是有视频么,你去看看,我当时就看的蒋深的视频,讲的挺明白

ginnerpeace 发表于 2014-3-27 16:48:41

ginnerpeace 发表于 2014-3-27 16:44 static/image/common/back.gif
  用$this->db->query(); 时括号里面要写sql的原生查询语句,返回的是一个数组对象,接收一下,最简单 ...

10楼这遍历的错了 foreach( $query->result_array() as $row ) ,然后就能var_dump( $row )了

小包 发表于 2014-3-27 16:49:32

ginnerpeace 发表于 2014-3-27 16:44 static/image/common/back.gif
  用$this->db->query(); 时括号里面要写sql的原生查询语句,返回的是一个数组对象,接收一下,最简单 ...
我的model:

$this->db->select('*');
$this->db->from('guestbook');
$query=$this->db->get();
return $query;

我的controller:

$this->load->model('blog_model');
$data['query'] = $this->blog_model->get_last_ten_entries();
if(!isset($data['query'])){
    $this->load->view('error');
}

报错内容:
Fatal error: Call to a member function select() on a non-object in X:\www\CI-study\application\models\blog_model.php on line 22

小包 发表于 2014-3-27 16:55:56

ginnerpeace 发表于 2014-3-27 16:46 static/image/common/back.gif
http://codeigniter.org.cn/
主页不是有视频么,你去看看,我当时就看的蒋深的视频,讲的挺明白 ...

我看了下视频的源码,和我写的基本一样,但是我的在使用select()的时候就报错了

ginnerpeace 发表于 2014-3-27 17:02:25

$this->db->from这样不行的吧。。。
  比如你查id,一般是$this->db->where( 'id', $id ); 然后select,然后用get接收
还有啊你后面那个isset太奇怪了。。。像你模型里里那样返回的话,是一个对象数组,你怎么搞成data里的一个键值了。。。这样可以判断是否空:if ($query->num_rows() > 0)

ginnerpeace 发表于 2014-3-27 17:09:51

小包 发表于 2014-3-27 16:55 static/image/common/back.gif
我看了下视频的源码,和我写的基本一样,但是我的在使用select()的时候就报错了
...

我感觉你是把php代码和CI方法混着写了,,,用CI的话就用它带的类,看看手册

小包 发表于 2014-3-27 17:41:32

ginnerpeace 发表于 2014-3-27 17:09 static/image/common/back.gif
我感觉你是把php代码和CI方法混着写了,,,用CI的话就用它带的类,看看手册
...

这是我的Controller:

class Blog extends CI_Controller{

    function __construct(){
      parent::__construct();
    }

    function index(){
      $this->load->model('blog_model');
      $data['query'] = $this->blog_model->get_last_ten_entries();
      print_r($data['query']);
    }

}

这是Model,:

class Blog_model extends CI_Model{

    var $title = '';
    var $content = '';
    var $date = '';

    function __construct(){
      parent::__construct();
      $dsn = 'dbdriver://root:123qwe@localhost/db_lyb;';
      $this->load->database($dsn);
    }

    function get_last_ten_entries(){
      $this->db->select('*');
      $this->db->from('guestbook');
      $query=$this->db->get();
      return $query;
    }


帮忙看下该怎么改

ginnerpeace 发表于 2014-3-27 17:56:32

额……构造函数里那个dbdriver这里要写mysql。。。。
先模型:
function get_last_ten_entries( $id ){ //查询的模型里需要形参
      $this->db->where( 'uid', $id )//uid是你数据库表里的字段名
      $this->db->select('*');
      $query=$this->db->get( 'guestbook' );
      return $query;
    }
控制器:
    function index(){
      $this->load->model('blog_model');
      $query = $this->blog_model->get_last_ten_entries();
      var_dump( $query ); //这时有输出数据了,但$query是个对象数组,只能这样查看值

      if ($query->num_rows() > 0)//判断query里有值没
      {
            foreach ($query->result_array() as $row)   //没有分号,这句以后把对象数组query的值给了变量数组row,你可以在这块echo $row['keyname'];
             // 这种好处就是可以将数组值传到视图里面,比如
             $this->load->view( 'viewname', $row );
             //有了这句,你在视图里就可以用:<?=$keyname;?> 直接显示值了
      }
   }

ginnerpeace 发表于 2014-3-27 17:58:35

最好不要在index里用,因为你要查询的,需要传参

在控制器里另写一个方法,带上形参, $query = $this->blog_model->get_last_ten_entries();这句的括号里要有参数才能查
页: 1 [2]
查看完整版本: CI新人学习求助