2011-09-21 34 views
0

我无法获得以下代码工作,它与数组的形成有关。数组实际上是在foreach()循环运行几次之后构建的,然后我想批量插入,但出现了格式错误。为什么?PHP CodeIgniter批插入不接受我的数组

foreach ($results as $r) { 
$insert_array = array(
          'ListingRid' => $r['ListingRid'], 
          'StreetNumber' => $r['StreetNumber'], 
          'StreetName' => $r['StreetName'], 
          'City' => $r['City'], 
          'State' => $r['State'], 
          'ZipCode' => $r['ZipCode'], 
          'PropertyType' => $r['PropertyType'], 
          'Bedrooms' => $r['Bedrooms'], 
          'Bathrooms' => $r['Bathrooms'], 
          'YearBuilt' => (2011 - $r['Age']), 
          'Status' => $r['Status'], 
          'PictureCount' => $r['PictureCount'], 
          'SchoolDistrict' => $r['SchoolDistrict'], 
          'ListedSince' => $r['EntryDate'], 
          'MarketingRemarks' => $r['MarketingRemarks'], 
          'PhotoUrl' => (!empty($photo_url) ? $photo_url : 'DEFAULT'), 
          'ListingAgentFirstName' => $r['ListingAgentFirstName'], 
          'ListingAgentLastName' => $r['ListingAgentLastName'], 
          'ContactPhoneAreaCode1' => (!empty($a['ContactPhoneAreaCode1']) ? $a['ContactPhoneAreaCode1'] : 'DEFAULT'), 
          'ContactPhoneNumber1' => (!empty($a['ContactPhoneNumber1']) ? $a['ContactPhoneNumber1'] : 'DEFAULT'), 
          'ListingOfficeName' => (!empty($r['ListingOfficeName']) ? $r['ListingOfficeName'] : 'DEFAULT'), 
          'OfficePhoneComplete' => (!empty($o['OfficePhoneComplete']) ? $o['OfficePhoneComplete'] : 'DEFAULT'), 
          'last_updated' => date('Y-m-d H:i:s') 
         ); 

         $insert[] = $insert_array; 

} 

         $this->db->insert_batch('listings', $insert); 

这里的错误:

甲PHP错误遇到

严重性:警告

消息:array_keys()[function.array-键]:第一个参数应 是一个数组

文件名:database/DB_active_rec.php

行号:1148

甲PHP错误遇到

严重性:警告

消息:排序()预计参数1是阵列,空给出

文件名:数据库/ DB_active_rec.php

行号:1149

有什么想法?谢谢!

回答

1

我已经减少了你的代码到最低限度,它似乎工作。

 $i = 0; 
     while ($i <= 10) { 

      $insert_array = array(
             'code' => 'asd' 
      ); 

      $insert[] = $insert_array; 
      $i++; 
     } 


     $this->db->insert_batch('group', $insert); 

您应检查数组中的元素,评论所有这些,直到你得到的罪魁祸首去评论他们一个接一个。

+0

我认为这可能是因为我的数组太大。它正在工作,但是可以一次插入批次执行1000多条记录? –

+1

我不认为这会是太多的记录,因为你会得到一个不同的错误。这部分代码看起来很可疑: '(!empty($ a ['ContactPhoneAreaCode1'])?$ a ['ContactPhoneAreaCode1']:'DEFAULT')'。我认为这段代码返回一个布尔值,因为你已经用圆括号包装了它。虽然我不认为这是罪魁祸首,但我同意@HerrKaleun,并且您可能会检查数组的元素,因为所有其他代码看起来都是正确的(基于配置项文档)。 – swatkins

+0

我也同意swatkins,你应该逐一检查每个数组,因为你的代码的'基本版'工作。 – Herr

1

看起来你需要将你的数组包装在第二个数组中。你应该提供一个行数组的数组。

$insert_array = array(array(...)); 
+0

是的。这对我有效。 –

+0

如何创建从一个普通阵列这样的阵列状 阵列( [0] =>数组 ( [track_id] => [camp_id] => 1 [email_title] =>样品 ) [ 1] =>数组 ( [track_id] => [camp_id] => 1 [email_date] => 2013-07-02 ) [2] =>数组 ( [track_id] => [camp_id] => 1 [email_template] => 2 ) –