0

当我将纯 PHP 代码转换为 CodeIgniter 时,我遇到了原生 PHP 函数问题。对此有任何想法或替代解决方案吗?

纯 PHP 代码

$aColumns = array( 'id', 'name', 'first_name' );
$sTable = "ajax";
$sQuery = "SELECT SQL_CALC_FOUND_ROWS 
          ".str_replace(" , ", " ", implode(", ", $aColumns))."FROM   $sTable
$rResult = mysql_query( $sQuery );
while ( $aRow = mysql_fetch_assoc( $rResult ) )
{
  print_r($aRow);
}

完美的结果输出

Array
(
    [id] => 1
    [name] => kane
    [first_name] => kane
)
Array
(
    [id] => 2
    [name] => kane
    [first_name] => kane
)
Array
(
    [id] => 3
    [name] => kane
    [first_name] => kane
)

代码点火器

$aColumns = array( 'id', 'name', 'first_name' );
$sTable = "ajax";
$sQuery = "SELECT SQL_CALC_FOUND_ROWS 
           ".str_replace(" , ", " ", implode(", ", $aColumns))."FROM   $sTable
$rResult = $this->db->query($sQuery);
while ( $aRow =  $rResult->row_array() )
{
      print_r($aRow);
}

无限结果输出

Array
    (
        [id] => 1
        [name] => kane
        [first_name] => kane
    )
Array
    (
        [id] => 1
        [name] => kane
        [first_name] => kane
    )
4

3 回答 3

2

那是因为$result->row_array()在你试图完成的事情中使用是错误的。

循环结果并将结果作为数组获取的正确方法是使用该$result->result_array()方法。像这样:

foreach( $rResult->result_array() as $aRow )
{
      print_r($aRow);
}

查看在 CI中生成查询结果的文档。

于 2012-07-05T16:42:26.073 回答
1

删除 SQL_CALC_FOUND_ROWS。您不需要它,因为您没有限制结果集。

foreach($rResult->result_array() as $aRow)
     print_r($aRow);
于 2012-07-05T16:42:33.507 回答
0

您可能需要考虑稍微组织一下您的 SQL 语句。

$this->db->select('id, name, first_name')
    ->from('ajax')

$query = $this->db->get();

$count = $query->num_rows();

foreach ($query->result_array() as $row)
    print_r($row);
于 2012-07-05T17:36:15.617 回答