2011-07-11 3 views
0

私はユーザIDを持つ配列を持っています。私はその配列を爆発させ、そのユーザーIDでデータベースからすべてを取り出したいと思っています。そのユーザーからのすべてのエントリではなく、各ユーザーがエントリを1つだけ取り出します。何か不足していますか?ありがとうございました!文字列を分解してからデータベースから取得する


編集:申し訳ありませんので、スパースであるために、それは欲求不満の長い夜をされている、私は詳しく説明します。次のように

if ($follower_array != "") 
{ 

    $followArray = explode(",", $follower_array); 
    $followCount = count($followArray); 
    $i = 0; 
    $display .= "<table>"; 

    foreach($followArray as $key => $value) 
    { 

     $i++; 
     $sql = mysql_query(" SELECT * FROM database WHERE mem_id='$value' 
          ORDER BY bc_date ASC 
          LIMIT 50 
         ") or die ("error!"); 

    while ($row = mysql_fetch_assoc($sql)) 
    { 
     $mem_id = $row['mem_id']; 
     $content = $row['content']; 
     $display .= "<td>' .$content. '</td></tr>"; 
    } 

    display .= "</table>"; 
} 

データベーステーブルは以下のとおりです。

members|content 
--------------- 
      id |id 
follower_array |mem_id 
       |content 

follwer配列が「4,5,6,7」など

のように見える私はダミーデータに設定された4つの会員IDを持っています。 2 - コンテンツ

  • mem_id:3 - コンテンツ
  • mem_id:4 - コンテンツ
  • - コンテンツ
  • mem_id 1:それは出力が

    • mem_idある$ followArray業者

      を検索します

    ですが、その後停止します。ユーザーごとにコンテンツがある場合は、メンバーごとに1つのコンテンツのみを取得します。ありがとう、私はそれをクリアすることを願っています。

  • +0

    クエリを実行して読み込むコードを表示します。また、データベースからその配列を取得していないと教えてください... –

    +0

    ちょうど楽しみのために:なぜ 'IN'節を使用しないのですか? –

    答えて

    0

    は、複数の行があなたの基準を満たし、データベースに存在していることを確認し、また

    をmysql_fetch_assocするは、mysql_fetch_arrayを変更してみてください。あなたのため

    出力が歪められるでした:あなたは更新


    ... ...直接データベースを照会するためのNavicatやMySQLのワークベンチのように助けるべき

    をプログラムを使用してみてください開始trタグがありませんか?また、二重引用符で始まる文字列を一重引用符で囲みました....それも修正されました。

    if ($follower_array != "") { 
    
      $followArray = explode(",", $follower_array); 
      $followCount = count($followArray);   
      $i = 0; 
      $display .= "<table>"; 
    
      foreach($followArray as $key => $value) { 
    
        $i++; 
        $sql = mysql_query(" 
            SELECT * 
              FROM database 
             WHERE mem_id='$value' 
          ORDER BY bc_date ASC 
             LIMIT 50 
        ") or die ("error!"); 
    
        while ($row = mysql_fetch_assoc($sql)) { 
          $mem_id  = $row['mem_id']; 
          $content = $row['content']; 
    
          $display .= "<td><tr>" .$content. "</td></tr>"; 
        } 
        display .= "</table>"; 
    } 
    
    +0

    ええ、それはただ1つの結果を返しています。私は質問を少し速く入力しましたが、編集しました。各データベースのすべてにIDがあり、メンバーIDで取得していますが、結果は1つだけです。 – dystopia

    +0

    さて、私の応答を変更しました... – espradley

    +0

    fetch_assocは機能しませんでした。私が最後の9時間何かを見てから盲目になっているのかどうか分かりません。データベースには、ユーザごとに10人あり、一意のIDで設定されています。しかし、助けてくれてありがとう。私はすべてが細かく調整されていることを確認するためにmqsqlワークベンチをチェックします。歓声 – dystopia

    0

    誤った列でWHERE条件を使用している可能性があります。 $のSQLは、クエリで使用さ idは、エントリIDです、あなたがUSER_ID = $値

    SELECT * FROM database WHERE user_id='$value' LIMIT 50 
    
    +0

    私は急いで質問を入れます。私はuser_idからそれを照会しています。しかし、お返事ありがとうございます! – dystopia

    0
    $searchSQL = "select * from database where id=$value'"; 
    $result = mysql_query($searchSQL); 
    while ($row = mysql_fetch_array($result)) 
    { 
        $id= $row['id']; 
        $name=$row['name']; 
        $phn=$row['phn']; 
        $sal=$row['sal']; 
    } 
    

    にIDを変更する必要があり、これはあなたを取得し、エントリID = $値データベースからすべてのSELECT語りますデータとあなたはそれが配列内の各項目の指標であるとして、それは毎回foreachループの実行を自分自身をincresesesとして$keyを使用してみてください、foreachは一度だけ$iを高めるためだ

    1

    を表示したいどこにエコーすることができます。

    関連する問題