PHP Code Igniter使用查询num_row()获得-1

时间:2019-03-27 01:46:43

标签: php sql sql-server codeigniter

我使用下面的代码从数据库获取结果。 我期望行数> 0,因为我在数据库中有1个条目。 相反,我在下面得到结果。

-1Array
(
    [0] => stdClass Object
        (
            [lngID] => 1
            [strRefTable] => team
            [intFirstParent] => 
            [intSecondParent] => 
            [bitHasChild] => 
            [strRefValue] => Automation
            [strShortDesc] => Automation
            [strLongDesc] => Automation
            [strCreatedBy] => 181551
            [dteCreatedDate] => 2019-03-27 09:09:08.000
            [strUpdatedBy] => 181551
            [dteUpdatedDate] => 2019-03-27 09:09:08.000
            [bitActive] => 1
        )

)

其中-1表示$query->num_rows()的回显,并且该数组证明我已在数据库中进行记录。

$query = $db->query($sql);
if(!$query) {
throw new Exception('Server error');
}
echo $query->num_rows();exit();
print_r($query->result());die();
if($query->num_rows() > 0){
$result = $query->result();
} 

为什么行计数为-1?

UPDATE

  

使用MSSQL

2 个答案:

答案 0 :(得分:0)

这看起来可能是CodeIgniter的bug in an older version

尝试升级您的CodeIgniter版本,或者,如果不可能的话,使用COUNT(*)查询或完整结果集上的PHP count()函数直接查询行数。

答案 1 :(得分:0)

对此行为的一种可能解释(如果您使用SQL Server的PDO PHP驱动程序连接到SQL Server)是num_rows()使用PDOStatement::rowCount,并且根据文档,结果将是{{ 1}},如果您执行-1语句并且未使用适当的游标类型。

  

返回添加,删除或更改的行数。如果最后一个SQL   关联的PDOStatement执行的语句是SELECT   语句,一个PDO :: CURSOR_FWDONLY游标返回-1。一种   PDO :: CURSOR_SCROLL ABLE游标返回行中的行数   结果集。