致命错误mysql查询codeigniter

时间:2014-04-24 17:31:53

标签: php mysql codeigniter

尝试在视图中构建菜单。给我致命的错误/未定义的查询功能。数据库通过控制器结构中的load-> database()连接。不熟悉codeigniter数据库查询,但我认为常规的mysqli会正常工作。这是代码:

<div class="at_mainMenu gradient02">
  <ul class="sf-menu" id="example">
  <?php
    $query = $this->db->query("SELECT * FROM menu WHERE priority=0");
    foreach ($query ->result_array() as $row) {
      echo "<li class='current'><a href='".$row['link']."'>".$row['text']."</a>";
      $id = $row['menuId'];
      $children = $this->db->query ("SELECT * FROM menu WHERE parentId=$id ORDER BY priority DESC");
        foreach ($children->result_array() as $row) {
          echo "<ul><li><a href='".$row['link']."'>".$row['text']."</a>";
            $id2 = $row['menuId'];
            $grandchildren = $this->db->query ("SELECT * FROM menu WHERE parentId=$id2 ORDER BY priority DESC");
            foreach ($grandchildren->result_array() as $row) {
              echo "<ul><li><a href='".$row['link']."'>".$row['text']."</a></li></ul>";
            }
          echo "</li></ul>"; 
        }
      echo "</li>";
    }
  ?>
  </ul>

2 个答案:

答案 0 :(得分:0)

如果不指定列,则无法进行查询。您可能希望对所有列使用*col1, col2

SELECT [column list] FROM [table_name]

答案 1 :(得分:0)

你可以通过你的视图调用mysql。如果你仍然强加,这是不好的...但如果你想学习,我可以帮助你理解如何创建一个简单的方法来处理模型,查看和控制。

步骤1.控制器:

首先在控制器文件夹中创建一个名为my_controller.php的控制器, 并把这段代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

        class My_controller extends CI_Controller {

            public function __construct() 
            {
                parent::__construct(); 
                date_default_timezone_set('Asia/Bangkok');
                $this->load->model(array('my_model'));
                $this->load->database();
                $this->output->enable_profiler(TRUE);
            }

            public function index()
            {
                $result_query = $this->my_model->GetMenu();

                $data['list_menu'] = '';

                foreach ($result_query as $key => $value) {
                    $data['list_menu'] .= '<li>';
                    foreach ($value as $index => $item) {
                        $data['list_menu'] .= '[' . $index . '] = ' . $item . ', '; 
                    }
                    $data['list_menu'] .= '</li>';
                }

                $this->load->view('my_view', $data);

            }

        }

    /* End of file My_controller.php */
    /* Location: ./application/controllers/My_controller.php */

第2步创建视图: 在应用程序文件夹中的视图文件夹中创建一个名为my_view.php的文件,并输入以下代码:

<html>
<head>
<title>My View</title>
</head>
<body>

    <h1>Simple List Menu!</h1>

    <ul>
        <?php echo $list_menu; ?>
    </ul>
</body>
</html>

步骤3.创建模型:

在模型文件夹中创建名为my_model.php的文件 并把这段代码:

<?php
class My_model extends CI_Model {

    function __construct()
    {
        $this->load->database();
    }

    function GetMenu()
    {
        $query = $this->db->get('Menu'); // where menu is your table name

        return $query->result_array();
    }

}

Cheerss .. 你必须读这个...... 它会引导你走向光明。所以你不再盲目了。 CI Documentation 注意:应用程序文件夹位于根文件夹中。你会看到的。如果不是那么不是代码忽略。 希望这会有所帮助。