0

私はこれを数時間いじっています。それはばかげたものでなければなりませんが、私はそれを見ていません。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
4

3 に答える 3

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
?>
于 2013-06-27T05:58:55.977 に答える
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; 

}
于 2014-12-19T18:18:35.500 に答える
0

説明されているようにここで デバッグします $this->db->last_query();

于 2014-12-19T12:26:00.120 に答える