2016-04-10 3 views
-3

は、私は値を取得したいが、それは二回まで来る:値は二回まで来る - PHP

<?php 

    session_start(); 
    $username = $_SESSION['user']; 
    include 'connect.php'; 
    if (isset($_GET['var'])) { 
     $var = $_GET['var']; 
     echo "<br>"; 
     echo $var; 
     $pieces = explode(",", $var); 

     foreach ($pieces as $i) { 
      $sql = "SELECT title FROM interests WHERE id = '$i' "; 
      $result = mysqli_query($con, $sql); 
      $row = mysqli_fetch_array($result); 
     } 
     $value = join(",", $row); 

    } 
    echo $username; 
    echo $value; 

?> 

それはとして起動します:result, result。 1つの結果としてしか出現せず、繰り返されるべきではありません。

+0

? –

+0

私はforeach関数を使っていくつかのidを単語に変換しようとしています。そして、すべての単語を "、"で区切って行に入れようとします。しかし、私は1つのidを持つと、同じ単語を2回エコーします。 –

+0

'$ pieces'とMySQLテーブルにあるものを表示できますか? –

答えて

2

mysqli_fetch_arrayは、数値でインデックス付けされた連想配列の両方を1つ返します。つまり、同じ配列内の各フィールドを2つコピーします(1つは番号で、1つは名前でインデックス付けされています)。取得のみ連想配列に、この呼び出しを変更します。あなたの第二の問題は、以下のコメントで議論に関しては

$row = mysqli_fetch_array($result, MYSQLI_ASSOC); 

、この試してみてください。

 $titles = []; 
     foreach ($pieces as $i) { 
      $sql = "SELECT title FROM interests WHERE id = '$i' "; 
      $result = mysqli_query($con, $sql); 
      $row = mysqli_fetch_array($result, MYSQLI_ASSOC); 
      $titles[] = $row["title"]; 
     } 
     $value = join(",", $titles); 
正確にあなたが達成しようとしている何
+0

結果は2倍ではなく単独で表示されるようになりました。しかし、もし私のvar = 1,2それは私に両方の対応する言葉をそれらのIDに与えることはありません、それは私に最初のものを与えます。 –

+0

@BadinaFilipあなたが 'foreach'ループを実行するたびに' $ row'を上書きするので、おそらくいつもそうしていました。 '$ row'は1つの値の配列になります。 – Chris

+0

その配列を受け取り、それに新しい値を追加する方法はありますか? –