我正在使用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行:
我在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的输出:
这对我来说很奇怪。
答案 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指向旧数据库。