【问题标题】:ci hmvc query returns empty result set in modelci hmvc 查询返回模型中的空结果集
【发布时间】:2015-04-18 11:59:48
【问题描述】:

我最近尝试为 https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/ 上的 Code igniter 2.2.1 实现 wiredesignz hmvc 模块化扩展 我按照概述中的说明安装扩展程序。

我的数据库转储如下:

CREATE TABLE IF NOT EXISTS `admin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(250) NOT NULL,
  `passwd` varchar(50) NOT NULL,
  `type` enum('super','sub') NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- Dumping data for table `admin`  
--

INSERT INTO `admin` (`id`, `email`, `passwd`, `type`) VALUES
(1, 'deb.pratyush@gmail.com', 'd84c095fc9614ddd8d6cad216956ba11', 'super');

-- --------------------------------------------------------

--
-- Table structure for table `cms`
--

CREATE TABLE IF NOT EXISTS `cms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(250) NOT NULL,
  `nav` varchar(20) NOT NULL,
  `slug` varchar(300) NOT NULL,
  `description` varchar(200) NOT NULL,
  `keywords` varchar(160) NOT NULL,
  `content` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'user id',
  `fname` varchar(50) NOT NULL,
  `lname` varchar(50) NOT NULL,
  `email` varchar(250) NOT NULL,
  `addr1` varchar(250) NOT NULL,
  `addr2` varchar(250) NOT NULL,
  `regdate` date NOT NULL,
  `country` varchar(250) NOT NULL,
  `pwd` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

我在管理模块中使用模型进行身份验证 application/modules/admin/models/admin_model.php 有
类名 Admin_model。它的代码是

class Admin_model extends CI_Model{

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

    function auth_admin($email, $passwd)
    {
        echo $email.' '.$passwd;
        $sql ="SELECT `id`, `email`, `type` FROM admin WHERE email='$email' AND passwd = MD5('$passwd')";
        $res=$this->db->query($sql);
        echo " res=<pre>".print_r($res, 1)."</pre>";
    }
}

管理控制器位于 application/modules/admin/controllers/admin.php 具有类名 Admin。代码如下:

class Admin extends MX_Controller{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('cms/cms_model');
        $this->load->model('admin_model');
        $this->load->library('session');
    }

    public function index()
    {
        $this->load->view('admin_header');
        $this->load->view('admin_login');
        $this->load->view('admin_footer');
        if(!empty($this->input->post('admin_login')))
        {
            $email = $this->input->post('log');
            $passwd = $this->input->post('pwd');



            $auth_res = $this->admin_model->auth_admin($email, $passwd);
            //print_r($auth_res);
            if(!empty($auth_res))
            {

            }
         }
     }
   }

请注意,数据库库是在 application/config/autoload.php 中自动加载的。 url 助手也是如此。

我得到的输出如下:

deb.pratyush@gmail.com pratyush res=

CI_DB_mysql_result Object
(
    [conn_id] => Resource id #38
    [result_id] => Resource id #47
    [result_array] => Array
        (
        )

    [result_object] => Array
        (
        )

    [custom_result_object] => Array
        (
        )

    [current_row] => 0
    [num_rows] => 1
    [row_data] => 
)

因此,尽管通过登录表单发送的用户输入是 deb.pratyush@gmail.com 作为电子邮件和 pratyush 作为密码(密码是用户表中的 MD5 散列),但调试给出了一个空的结果集。

我什至尝试将值“deb.pratyush@gmail.com”和“pratyush”分别硬编码为电子邮件和密码列,但没有运气。

我被这个问题困扰了很长时间。有人可以帮忙吗?

【问题讨论】:

    标签: mysql codeigniter-2 hmvc


    【解决方案1】:

    如果您正在使用 codeignator,请使用 codeignator standered of query

    阅读手册CI QUERY

     $this->db->where('email', $email);
            $this->db->where('passwd', md5($passwd));
            $query = $this->db->get('admin');
            if (!$this->db->_error_message()) {
                if ($query->num_rows() > 1) {
                    foreach ($query->result() as $row) {
                       print_r($row);
                    }
                } else {
                   echo "error";
                }
            } 
    

    【讨论】:

      【解决方案2】:

      在模型中的 auth_admin 函数中,我相信您应该返回查询结果以便在控制器中访问它。现在你的控制器中的 $auth_res 变量是空的,因为模型中的函数没有返回任何内容。

      【讨论】:

        猜你喜欢
        • 2021-09-04
        • 2017-12-19
        • 2019-10-28
        • 1970-01-01
        • 1970-01-01
        • 2021-03-18
        • 2021-11-20
        • 2019-10-13
        • 1970-01-01
        相关资源
        最近更新 更多