2016-12-18 2 views
0

私の前の質問hereによると、私は暗黙の使用で連想配列を単一の文字列に変換することができます。今、カートセッション($ _SESSION ['cart'])から、私は書籍のイメージ名(連想配列です)を取得し、それを単一の文字列に変換したいと考えています。ここに私のコードは次のとおりです。データベースからレコードの値を取得し、それを暗黙に暗化

book1_image、book2_image、book3_image

しかし、それはこのに戻る:私は上記の私のコードから見たい何

foreach ($_SESSION['cart'] as $key=> $value) { 
    $sql = mysql_query("SELECT * FROM product WHERE product_name='$key'"); //take image name from table product with book_name=$key 

    $images = array(); 
    while ($product_image= mysql_fetch_assoc($sql)) { 
     $images[] = $product_image['book_image']; 
    } 

    echo implode(', ', $images); 
} 

がある

本1_imagebook2_imagebook3_image

私はimplodeメソッドを書いているとは思えません。自分のコードに何が問題なのか分かりません。誰か助けてくれますか?事前に感謝

+0

うまく動作します。https://3v4l.org/iEolv別の場所でエラーを検索します。 –

+0

このコードには間違いがあります(mysql_ *は時代遅れであり、まもなく廃止され、信頼できない入力を使用してクエリ文字列を構築し、ループ内で複数のSQLクエリを実行すると、 goなど)、 – GordonM

+0

データベースに正しく保存されていますか? –

答えて

0

エラーは間違ってecho位置にあります。

// define images as empty array before you loop 
$images = array(); 

foreach ($_SESSION['cart'] as $key=> $value) { 
    $sql = mysql_query("SELECT * FROM product WHERE product_name='$key'"); //take image name from table product with book_name=$key 

    while ($product_image= mysql_fetch_assoc($sql)) { 
     $images[] = $product_image['book_image']; 
    } 
} 

// echo after you check all items 
echo implode(', ', $images); 

とクエリのあなたの束のようなクエリで置き換えることができます。

SELECT * FROM product WHERE product_name IN ('name1', 'name2', 'name3') 

そして最後にではなく、少なくとも - それは、すでにPHPから削除されますようmysql延長は、避けなければなりません。

+0

私はforeachの後にエコーを書く場合、カートセッションに格納された最後の項目を表示します –

+0

あなたは '$ images'をすべての反復で空の配列に設定しているからです。私のコードをもう一度チェックしてください。 –

+0

ああ、そうです。だから私はエコーと私の画像変数を間違った場所に書きます、ありがとう男! :D –

関連する問題