php - 使用PHP将部分MySQL列数据复制到另一个

标签 php mysql regex

我的 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 URL 周围没有引号(?)

我做错了什么吗?和引号有关系吗?

感谢您的阅读和任何帮助!

最佳答案

您正在使用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 是一个位字段,指示哪一个是您的“主图像”。这称为标准化

关于php - 使用PHP将部分MySQL列数据复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226374/

相关文章:

php - 同一个查询中的多个 group_concat

PHP & MySQL - 如何显示类别和子类别逻辑

regex - 如何在 bash 正则表达式替换中引用捕获

php - 如何通过 SQL 查询获取内容生成 PDF 文件?

php从mysql返回值2次

mysql - 在同一个表的左连接上选择多个计数

mysql - 如何关联 PhpMyAdmin 中的表

用逗号分隔多个 MAC 地址的正则表达式?

php - 用于检测链接但不检测图像的正则表达式模式

php - 相互比较多个值