2013-01-09 47 views
3

我已經做了一個相當徹底的搜索這個錯誤,雖然我發現了很多關於'確保你傳遞數組或SQL查詢',我想我可能需要更多的CodeIgniter庫更具體的幫助。CodeIgniter:PHP錯誤:在Table.php foreach()中無效的參數:第198行

我有一個視圖,只是應該創建一個查詢(或數組)並生成一個表。

(最終,查詢會從模型發生和表生成將是我的一個功能,所以我可以在其他視圖重新使用它,但我開始接觸僅僅是基本的回聲屏幕)

視圖被設置爲這樣:

<div class="span4 well well-small"> 
      <h4>Requests:</h4> 
      <?php 
       $this->table->set_heading('ID', 'Request', 'User', 'Date'); 

       $query = array('id'=>'123', 'request'=>'FARTS', 'user'=>'Steve', 'date'=>'Today'); //$this->db->select('user_id', 'password', 'user_name', 'company_id')->from('users'); 
       echo $this->table->generate($query); 
      ?> 
      <h4>In this div:</h4> 
      <p>we will display some information about recent requests. It will show a small table with Request ID, Request Name, and Date Requested headers.</p> 
</div> 

打印帶有4 PHP錯誤盒子一個盒子說:

一個PHP錯誤遇到

嚴重性:警告

消息:的foreach()

文件名提供參數無效:庫/ Table.php

行號:198

當我在Table.php檢查線198庫,它需要一個數組(關聯或不關聯)或來自數據庫的查詢。我試圖傳遞一個非關聯數組,一個關聯數組和一個數據庫查詢,所有這些都會產生相同的錯誤。

而且,所以你不必去通過CI翻閱,這裏是引發錯誤的功能:

function _prep_args($args) 
{ 
    // If there is no $args[0], skip this and treat as an associative array 
    // This can happen if there is only a single key, for example this is passed to table->generate 
    // array(array('foo'=>'bar')) 
    if (isset($args[0]) AND (count($args) == 1 && is_array($args[0]))) 
    { 
     // args sent as indexed array 
     if (! isset($args[0]['data'])) 
     { 
      foreach ($args[0] as $key => $val) 
      { 
       if (is_array($val) && isset($val['data'])) 
       { 
        $args[$key] = $val; 
       } 
       else 
       { 
        $args[$key] = array('data' => $val); 
       } 
      } 
     } 
    } 
    else 
    { 
     foreach ($args as $key => $val) 
     { 
      if (! is_array($val)) 
      { 
       $args[$key] = array('data' => $val); 
      } 
     } 
    } 

    return $args; 
} 

回答

4

更改$ query變量是這樣的:

$query = array(array('id'=>'123', 'request'=>'FARTS', 'user'=>'Steve', 'date'=>'Today')); 

即使沒有特定的鍵=>值對,該方法也需要一個數組數組。

$query = array(array('123','FARTS','Steve', 'Today')); 

實質上,這也是您在使用CI的數據庫庫時應該返回的數據庫查詢的內容。

就個人而言,除非你要直接從數據庫查詢中使用的數據,我會用:

$this->table->add_row('123','FARTS','Steve', 'Today'); 
-OR- 
$this->table->add_row(array('ID'=>'hello','class'=>'Today','data'=>'Displayed Text')); 

至於你的數據庫查詢得到同樣的錯誤,我會多次檢查什麼樣的輸出的你實際上是從所述查詢中接收到的。

希望這可以幫助

+3

這樣做。謝謝。我現在看到它。我沒有通過數組,只是一個數組。 $ this-> table-> addrow();是我的下一步。我只是爲了簡單而使用虛擬陣列。我很感激。 – Patrick

相關問題