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
)

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
    )
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 に答える