当我将纯PHP代码转换为CodeIgniter时,我有一个本机PHP函数问题

时间:2012-07-05 16:31:45

标签: php codeigniter

当我将纯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
)

Codeigniter CODE

$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
    )

3 个答案:

答案 0 :(得分:2)

多数民众赞成在你想要完成的事情中使用$result->row_array()是错误的。

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

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

查看CI中generating query results的文档。

答案 1 :(得分:1)

删除SQL_CALC_FOUND_ROWS。您不需要这样做,因为您不限制结果集。

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

答案 2 :(得分: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);