我现在已经搞乱了几个小时了。它必须是愚蠢的东西,但我只是没有看到它。为什么我的db-> get()没有返回任何行?这是我第一次尝试MVC框架。我在Ubuntu中安装了apache2,mysql,php5和codeigniter。出于某种原因,我似乎无法让模型访问数据库中的数据。
# cat config/database.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = 'webuser';
$db['default']['password'] = 'webuser';
$db['default']['database'] = 'product';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
# cat models/productmodel.php
<?php
class Productmodel extends CI_Model {
public function __construct() {
parent::__construct();
$this->load->database();
}
public function ListData() {
$query = $this->db->get("Fruit");
if ($query->num_rows() > 0) {
foreach ( $query->result() as $row ) {
echo "VALUE: <BR>\n";
}
} else {
$string = $this->db->last_query();
echo "$string <BR>\n";
}
return $query->result();
}
}
?>
# cat controllers/productcontroller.php
<?php
class Productcontroller extends CI_Controller {
public function index() {
$this->load->model('productmodel');
$data['query'] = $this->productmodel->ListData();
$data['title'] = 'MVC Test';
$data['heading'] = 'Data From product.Fruit';
$this->load->view('content', $data);
}
}
?>
# cat views/content.php
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
<?php foreach ($query AS $value) {echo "Value: $value <BR>\n"; } ?>
</body>
</html>
# echo "SELECT * FROM product.Fruit" | mysql -h 127.0.0.1 -u webuser --password=webuser
name color size
Apple Red 1
Orange Orange 1
Watermelon Green 3
Grape Green 0
Cherry Red 0
HoneyDew Green 2
答案 0 :(得分:1)
试试这个:
<?php
$data = array(); #array declaration
$query = $this->db->get("Fruit"); #actual get all query
if($query->num_rows() > 0){ #checking for the existence of rows
$data = $query->result_array(); #will fetch all the tuples in the data array
}
echo "<pre>";print_r($data);echo "</pre>";die; #print the data array and die
?>
答案 1 :(得分:0)
如上所述Here
使用 $this->db->last_query();
进行调试
答案 2 :(得分:0)
尝试这个。它将为您提供表中的数据和表中包含的记录数。
public function your_method()
{
$this->db->select('*')->from('your_table');
$query = $this->db->get();
if($query->num_rows() > 0)
{
$res['your_data'] = $query->result();
$res['num_rows'] = $query->num_rows();
}
//if your_table contains data/records or not the following code will give you result in both the cases.
echo "<pre>";print_r($res);die;
}