codeigniter helloworld app由于某种原因没有运行

时间:2016-05-06 15:57:42

标签: php codeigniter

我正在尝试遵循教程here,这只是一个从数据库中提取数据的简单helloworld。

我正在使用CI 3.0.6。

之前我从未使用过codeigniter,但我想尝试一个框架。

无论如何,我认为我正确地遵循了教程(我确实认为教程使用稍微旧版本的codeigniter,因为一些路径有点不同)但是我无法让它工作,它给了我错误{{ 1}}

我对此有几个问题。

教程告诉我使用模型,但模型?

我怎样才能使这个工作?如果我能够正常工作,我毫不怀疑我可以将它作为一种学习经验来扩展我的项目。

我的代码: helloworld.php(Controller @ BASEDIR / application / controllers)_:

The page you requested was not found.

helloworld_model.php(Model @ BASEDIR / application / models):

<?php
    class Helloworld extends Controller{
        function index()
        {
            $this->load->model('helloworld_model');

            $data['result'] = $this->helloworld_model-><span class="sql">getData</span>();
            $data['page_title'] = "CI Hello World App!";

            $this->load->view('helloworld_view',$data);
        }
    }
?>

helloworld_view(查看@ BASEDIR / application / views):

<?php
class Helloworld_model extends Model {

    function Helloworld_model()
    {
        // Call the Model constructor
        parent::Model();
    }

    function getData()
        {
            //Query the data table for every record and row
            $query = $this->db->get('data');

            if ($query->num_rows() > 0)
            {
                //show_error('Database is empty!');
            }else{
                return $query->result();
            }
        }

}
?>

我的数据库信息:

<html>
    <head>
        <title><?=$page_title?></title>
    </head>
    <body>
        <?php foreach($result as $row):?>
        <h3><?=$row->title?></h3>
        <p><?=$row->text?></p>
        <br />
        <?php endforeach;?>
    </body>
</html>

&安培;我的自动加载:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'private',
    'username' => 'private',
    'password' => 'private',
    'database' => 'database',
    'dbdriver' => 'mysql';
    'dbprefix' => 'va',
    '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
);

我试图访问http://myurl.com/dev/index.php/helloworld/

来访问该页面

/ dev /是我的安装目录。

同样,我以前从未使用过框架,所以这个问题可能很容易解决。

2 个答案:

答案 0 :(得分:2)

如果您完全遵循该教程,那么您需要在url中访问不带index.php的页面。

也可以使用PHP5构造函数进行更改:

function Helloworld_model()
{
    // Call the Model constructor
    parent::Model();
}

要:

function __construct()
{
    // Call the Model constructor
    parent::__construct();
}

这也没有意义:

if ($query->num_rows() > 0)
{
    //show_error('Database is empty!');
}
else
{
    return $query->result();
}

if / else里面的代码应该被切换。如果返回的行数大于0,则返回结果,否则显示数据库为空的错误。

控制器中的最后一件事:

$data['result'] = $this->helloworld_model-><span class="sql">getData</span>();

仅将数据库结果存储到数据变量,将其传递给视图并在视图中包装数据的任何元素。

$data['result'] = $this->helloworld_model->getData();

答案 1 :(得分:1)

如果您阅读文档控制器 enter link description here

你可以看到在application / controller / Name.php中,控制器的名称需要大写,你需要在类中(请记住扩展CI_Controller)

<?php
class Controller_name extends CI_Controller {

        public function view($page = 'home')
        {
        }
}

对模型的调用是正确的$this->load->model('helloworld_model'); m但请记住,在applicatoin / models / Model_name.php中也需要大写,并且需要使用insend(记住扩展CI_Model)

<?php 
class Blog_model extends CI_Model {

        public function __construct()
        {
                // Call the CI_Model constructor
                parent::__construct();
        }

是的,您需要自动加载数据库,但在您的数据库配置(application / config / database.php)中将dbdriver更改为 mysqli