2

mySQL DB に「追加の画像」列があり、最初の URL だけを「メイン画像」として別の列にコピーしようとしています (これまでのところ失敗しています)。

例えば:

http://website.com/img1.jpg,http://website.com/img2.jpg,http://website.com/img3.jpg,etc..

これらの画像は引用符で囲まれておらず、データベースはフィード経由で自動的に更新されるため、それぞれを手動で更新するだけでは問題ありません。

私はいくつかの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 の (?) の周りに引用符がないためだと思います。

私は何か間違ったことをしていますか?引用符と関係がありますか?

読んでくれてありがとう!

4

2 に答える 2

2

を使用していますimplode()。これは、文字列の配列を 1 つの文字列に結合します。

反対の... が必要です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 が質問のコメントで述べたように、これを別の方法で保存する必要があります。これは 1 対多の関係のように見えるので、これらの 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あり、どれが「メインイメージ」であるかを示すビットフィールドです。これは正規化と呼ばれます。

于 2013-06-21T01:31:22.197 に答える