1

我编写了以下代码来尝试将数据插入数据库的表中。但是,它只是插入字母。我不确定我做错了什么。

$media_items = array( 
array (
   "media_name" => "Facebook",
   "link_url" => "http://www.facebook.com/insightdezign",
   "icon" => "facebook.png",
   "size" => "48",
   "order" => "0"
),
array (
   "media_name" => "Twitter",
   "link_url" => "http://www.twitter.com/insightdezign",
   "icon" => "twitter.png",
   "size" => "48",
   "order" => "1"
)
);

foreach ($media_items as $media_item) {
    if (is_array($media_item)){
        foreach ($media_item as $item) {
            $rows_affected = $wpdb->insert( $ffui_items, array( 'media_name' => $item['media_name'], 'link_url' => $item['link_url'], 'icon' => $item['icon'], 'size' => $item['size'], 'order' => $item['order'] ) );
        }
    }
}
4

1 回答 1

2

在嵌套的 foreach 循环中,您将循环遍历字符串,而不是数组。作为类型杂耍的结果,索引将被评估为0. 由于 PHP 也接受$foo['bar']字符串的语法,所以它只会返回第一个字母。

您可以简单地删除嵌套的 foreach 循环并执行以下操作:

foreach ($media_items as $media_item) 
{
    if (is_array($media_item))
    {
        $rows_affected = $wpdb->insert( $ffui_items, 
            array( 
            'media_name' => $media_item['media_name'], 
            'link_url' => $media_item['link_url'], 
            'icon' => $media_item['icon'], 
            'size' => $media_item['size'], 
            'order' => $media_item['order'] 
            ) ;
    }
}
于 2013-10-20T16:24:19.187 回答