我使用下面的代码从数据库获取结果。 我期望行数> 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
答案 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游标返回行中的行数 结果集。