爆炸字符串然后从数据库中获取

时间:2011-07-11 03:37:45

标签: php mysql arrays explode

我有一个拥有用户ID的数组。我想爆炸该数组并通过该用户ID从数据库中获取所有内容。它每个用户只获取一个条目,而不是该用户的每个条目。我错过了什么吗?谢谢!


编辑:很抱歉这么稀疏,这是一个漫长的挫折之夜,我会详细说明。

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 - 内容

然后停下来。当每个用户有更多内容时,它仅为每个成员检索一个内容。谢谢,我希望我把它清理干净。

4 个答案:

答案 0 :(得分:1)

这是因为foreach只增加$i一次,尝试使用$key,因为每次foreach循环运行时它会自动增加,因为它是数组中每个项目的索引。

答案 1 :(得分: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>";
}

答案 2 :(得分:0)

可能您在错误的列上使用WHERE条件。 $ sql说SELECT ALL FROM DATABASE WHERE ENTRY ID = $ VALUE, 您的查询中使用的ID是条目ID,您必须将id更改为user_id = $ value

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

答案 3 :(得分: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'];
 }

这将获取您的数据,您可以回显您想要显示的位置