我的mySQL数据库中有一个“附加图像”列,我(到目前为止还没有成功)尝试将第一个URL复制到另一列作为“主图像”
例如:
http://website.com/img1.jpg,http://website.com/img2.jpg,http://website.com/img3.jpg,etc..
这些图片周围没有引号,并且数据库会通过Feed自动更新,因此只需手动更新每个数据都是不可能的。
我有一些PHP代码:
$query5 = "SELECT COL_66 FROM tbl_name";
$result6 = mysql_query($query5);
if (!$result6) {
echo 'Query5 Failed: ' . mysql_error();
exit;
}
$row2 = mysql_fetch_row($result6);
我正在尝试使用
$picture = implode(",", $row2);
echo $picture[0];
然后我尝试了
$picture = explode(",", $row2);
echo $picture[0];
内爆的回报是:
h
爆炸的回报是:
Warning: explode() expects parameter 2 to be string, array given in ...
我假设这是因为img网址周围没有引号(?)
我做错了吗?它与引号有什么关系吗?
感谢阅读&任何帮助!
答案 0 :(得分:2)
您正在使用implode()
。它将一串字符串连接成一个字符串。
你需要相反的...... explode()
,它接受一个字符串并将其拆分成一个数组。
您需要遍历结果集,如下所示:
while ($row2 = $mysql_fetch_row($result6)) {
// assuming the column you need is the first column returned by the query
$picture = explode(',', $row2[0]);
echo $picture[0];
// OR
list($picture) = explode(',', $row2[0]);
echo $picture;
}
正如@zerkms在问题评论中所说,你应该以不同方式存储它。这看起来像是一对多关系,因此您应该将这些URL存储在单独的表中。像这样:
+-------------+-----------------------------+---------+
| mainTableID | URL | primary |
+-------------+-----------------------------+---------+
| 1 | http://website.com/img1.jpg | 1 |
| 1 | http://website.com/img2.jpg | 0 |
| 1 | http://website.com/img3.jpg | 0 |
+-------------+-----------------------------+---------+
mainTableID
是主表的外键,primary
是一个位字段,表示哪一个是您的“主图像”。这称为规范化。
答案 1 :(得分:0)
尝试:
第一个$行是一个数组,其中[0]是整行(只有一列)。 $ picture是第一行的第一部分。
$ row2 = mysql_fetch_row($ result6);
$ picture = explode(",",$ row2 [0]);