CodeIgniter数据库访问的奇怪问题

时间:2015-08-12 08:56:29

标签: php mysql codeigniter

我正在使用CodeIgniter 2.2开发一个Web应用程序。我使用了大约20个表和不同的模型,控制器和视图。每个查询运行正常,我得到了理想的结果。

昨天我编写了一个简单的查询来从我的数据库中获取数据。当我在mysql中运行它时,查询返回结果。但是当我从CodeIgniter结果集返回输出时,它返回零(0)行。

我正在为您提供用于调试的代码详细信息。

我的表格(SQLFIDDLE链接Here

CREATE TABLE IF NOT EXISTS `goal` (
  `goal_id` int(11) NOT NULL,
  `sub_program_id` int(11) NOT NULL,
  `emp_id` varchar(20) NOT NULL,
  `goal_desc` varchar(300) NOT NULL,
  `goal_value` int(9) NOT NULL,
  `actual_value` int(9) NOT NULL DEFAULT '0',
  `start_date` date NOT NULL,
  `end_date` datetime DEFAULT '0000-00-00 00:00:00'
);
ALTER TABLE `goal`
ADD PRIMARY KEY (`goal_id`);
ALTER TABLE `goal`
MODIFY `goal_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=34;
INSERT INTO `goal` 
(`goal_id`, `sub_program_id`, `emp_id`, `goal_desc`, `goal_value`, `start_date`, `actual_value`, `end_date`) 
VALUES
(1, 103, 95113, 'dxgdsfg', 34, '2015-07-30', 0, '0000-00-00 00:00:00'),
(2, 103, 920836, 'cvbn', 34, '2015-07-30', 0, '0000-00-00 00:00:00'),
(3, 101, 95113, 'fgh', 45, '2015-07-29', 0, '0000-00-00 00:00:00'),
(4, 101, 95113, 'fgh', 45, '2015-07-29', 0, '0000-00-00 00:00:00'),
(5, 103, 95113, 'fgh', 45, '2015-07-29', 0, '0000-00-00 00:00:00'),
(6, 101, 920836, 'fgh', 45, '2015-07-29', 0, '0000-00-00 00:00:00'),
(7, 101, 95113, 'fgh', 45, '2015-07-29', 0, '0000-00-00 00:00:00')

当我尝试从mysql运行此查询时

SELECT sub_program_id, max(goal_id) as new_goal FROM goal where emp_id='95113' group by sub_program_id

我得到2行:

enter image description here

我在CodeIgniter中也是这样做的,我的调试代码如下所示。

$qbik="SELECT sub_program_id, max(goal_id) as new_goal FROM goal where emp_id='95113' group by sub_program_id";
$qrbik=$this->db->query($qbik);
if($qrbik)
    echo '<br>Number of rows: '.$qrbik->num_rows();
$x=$qrbik->result();
echo '<br>Result: '; print_r($x);
echo '<br>SQL Query: '.$qbik;
echo '<br>Last Query that run on database using codeigniter: '.$this->db->last_query();
exit;

CodeIgniter的输出:

enter image description here

这对我来说很奇怪。

3 个答案:

答案 0 :(得分:2)

试试这个:

function result()
    {
        $query=$this->db->query("SELECT sub_program_id, max(goal_id) as new_goal FROM goal where emp_id='95113' group by sub_program_id");
        $result = $query->result_array();//assign data to objective array            
        $count = count($result);//get count

        if (!empty($count))
        {
            //if $result having one or more answer it comes to this
            echo '<br>Number of rows: '.$count;
            echo '<br>Result: '.print_r($result);
            //echo '<br>SQL Query:'.$qbik;
            //echo '<br>Last Query that run on database using codeigniter: '.$this->db->last_query();

        }
        else
        {
           echo 'Nothing selected form database';
        }
    }

答案 1 :(得分:1)

希望这会对你有帮助......

    $this->db->select('sub_program_id, max(goal_id) as new_goal');
    $this->db->from('goal');
    $this->db->where('emp_id',95113);
    $this->db->group_by('sub_program_id');
    $q = $this->db->get();
    if ($q->num_rows() > 0) {
        print_r($q->result());
    }

答案 2 :(得分:1)

感谢社区的所有努力。我特别感谢@bugfixer,@ abdulla,@ prasant,@ ariful和@ user1048123。

我得到了答案。这不是CodeIgniter或数据库问题。由于数据库未命中配置,会出现此问题。 codeigniter指向旧数据库。