尝试在数据库中存储图像URL时出错

时间:2015-04-19 23:39:45

标签: php

我有以下代码在数据库

中的特定列上存储数组内容(图像URL)
// store the values returned by getItemImageUrls() in the sqlite DB
     foreach ($items as $item) {
                             $images = $item-> getItemImageUrls(); 
                            $db->table('images')->save(array(
                            'items_id' => $item->getId(), //Item class filed
                             'link' =>$images  // store Urls into link column of images table
                             ));
                        }

getItemImages()是一个从html字符串中检索图像网址的函数,如下所示:

 public function getItemImageUrls()
    {
        $dom = new domDocument;
        $dom->loadHTML($this->content);
        $dom->preserveWhiteSpace = false;
        $url = array();
        $images = $dom->getElementsByTagName('img');
        foreach($images as $img)
        {
            $url[] = $img->getAttribute('src');
        }

        return  ($url);
    }

我的问题是我将Array转换为字符串转换错误。我怎样才能解决这个问题? 感谢您的帮助

1 个答案:

答案 0 :(得分:1)

问题是您的数据库列不接受数组但只接受字符串。所以我们需要使用implode()函数将图像数组转换为逗号分隔的字符串。

更新了代码以分别保存每一行

// store the values returned by getItemImageUrls() in the sqlite DB
foreach ($items as $item) {
    $images = $item-> getItemImageUrls();

    //converting the array into string (update : you don't need it )
    //$images = implode(",", $images); 

    //update : for saving each image in single row
    foreach($images as $image) {
           $db->table('images')->save(array(
             'items_id' => $item->getId(), //Item class filed
             'link' =>$image  // store Urls into link column of images table
             ));
    }

}

您可以在需要时使用explode函数将字符串转换回数组。