2011-07-11 41 views
0

我有一個有userid的數組。我想分解該數組,並通過該用戶標識從數據庫獲取所有內容。它僅從每個用戶獲取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」 等

我有四個成員的ID在僞數據組。它檢索那些在$ followArray

輸出是

  • mem_id:1 - 內容
  • mem_id:2 - 含量
  • mem_id:3 - 含量
  • mem_id:4 - 內容

但後來停止。當每個用戶有更多內容時,它只會爲每個成員檢索一個內容。謝謝,我希望我解決這個問題。

+0

向我們展示您執行和從查詢中讀取的代碼。另外,請告訴我你不是從數據庫中獲取該數組以及... –

+0

只是爲了好玩:爲什麼不使用'IN'子句? –

回答

0

嘗試改變mysql_fetch_array到mysql_fetch_assoc

此外,還要確保有在符合條件的數據庫不止一個行。你應該嘗試使用類似的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

是的,它只返回一個結果。我快速輸入了問題,但編輯了它。每個數據庫中的所有內容都有一個ID,而我正在通過成員ID進行檢索,但它只能返回一個結果。 – dystopia

+0

好的,改變了我的迴應... – espradley

+0

fetch_assoc沒有工作。我不知道在過去的9個小時或者什麼情況下,我是否會失明。在數據庫中,每個用戶有10個,設置了唯一的ID。但是,謝謝你的幫助。我將檢查mqsql工作臺以確保一切都很好調整。歡呼聲 – dystopia

0

也許您在錯誤的列上使用WHERE條件。 $ sql中說,所有選擇從數據庫,在那裏ENTRY ID = $價值, 在查詢中使用的ID是入門的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']; 
} 

這將獲取您的數據並可以呼應要顯示

1

這是因爲foreach只會增加$i一次,請嘗試使用$key因爲它increseses自己每次foreach循環運行,因爲它是陣列中的每個項目的索引。