我创建了一个新表(颜色),其中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
这就是它填充后的样子:
答案 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