Mysql选择并使用Php foreach循环插入另一个表

时间:2015-05-21 22:41:01

标签: php mysql

我创建了一个新表(颜色),其中id和hex作为列,所有现有的id都保存在pics表中,同时还有图片的路径,这些将进入带有多个十六进制的新颜色表值。我正在使用一个类从图片中提取突出的颜色作为十六进制值的数组。

这是到目前为止的代码:

$data = $conn->query('SELECT id,pic_path FROM pics WHERE pic_id = 1231');
while($row = $data->fetch()) {
    $image = new ColorsOfImage('images/'.$data['pic_path']);
    $colors = $image->getProminentColors();

    foreach($colors as $key => $val)
    {
        $sql = "INSERT INTO colours (pic_id,colour) VALUES (:pic_id,:colour)";
        $q = $conn->prepare($sql);
        $q->execute(array(':pic_id'=>$data['pic_id'],':colour'=>$val));
    }
}

但是我收到了这个错误:

Fatal error: Cannot use object of type PDOStatement as array

这就是它填充后的样子:

sample fields

2 个答案:

答案 0 :(得分:2)

当您想要的是$data['pic_id']时,您使用了$row['pic_id']

答案 1 :(得分:1)

这可以通过一个查询来完成,不需要php,也不需要循环

INSERT INTO colours (pic_id,colour)
SELECT id,pic_path FROM pics
WHERE pic_id = 1231

完整详情:https://dev.mysql.com/doc/refman/5.1/en/insert-select.html