How do I loop through a PHP array containing data returned from MySQL?

后端 未结 6 1838
野趣味
野趣味 2020-12-21 18:10

Ok I have a table with a few fields. One of the fields is username. There are many times where the username is the same, for example:

相关标签:
6条回答
  • 2020-12-21 18:21

    I like to separate the DB logic from the display. I generally put my results into an array that I can call within the HTML code. Purely personal preference; but here's how'd I'd approach the problem: (I'd take the $sql out of the error message in production)

    <?php
    $sql="
      SELECT *
      FROM auth
      WHERE username='$user';
      ";
    $result = mysql_query($sql)
      or die("Failed Query : ".mysql_error() . $sql);  //do the query
    
    while ($ROW = mysql_fetch_array($result,MYSQL_ASSOC)) {
      $USERS[] = $ROW;
    }
    ?>
    
    HTML CODE
    
    <? foreach ($USERS as $USER) { ?>
    
    Study: <?=$USER['dbFieldName'];?> - <?=$USER['dbFieldName2'];?>
    
    <? } //foreach $USER ?>
    

    0 讨论(0)
  • 2020-12-21 18:22

    I suggest you to read this: http://www.w3schools.com/php/php_mysql_select.asp It will give you an overview idea of how to properly connect to mysql, gather data etc

    For your question, you should use a loop:

    while ($row = mysql_fetch_row($result)){//code}
    

    As said by htw

    0 讨论(0)
  • 2020-12-21 18:22

    You can also obtain a count of all rows in a table like this:

    
        $count = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS count FROM table"));
        $count = $count["count"];
    

    You can also append a normal WHERE clause to the select above and only count rows which match a certain condition (if needed). Then you can use your count for loops:

        $data = mysql_query("SELECT * WHERE username='bob'");
        for ($i = 0; $i 

    Also, mysql_fetch_array() is usually a lot easier to use as it stores data in an associative array, so you can access data with the name of the row, rather than it's numeric index.

    Edit: There's some kind of bug or something going on where my second code block isn't showing everything once it's posted. It shows fine on the preview.

    0 讨论(0)
  • 2020-12-21 18:26

    $qry=mysql_query(select * where username='bob');

    if(mysql_num_rows($qry))

    {

     while($row=mysql_fetch_array($qry,MSQL_NUM))
    
     {
    
            echo $row[0]."&nbsp;&nbsp;".$row[1]."&nbsp;&nbsp;".$row[2]."<br>";
    
     }
    

    }

    0 讨论(0)
  • 2020-12-21 18:40

    Use a loop, and use mysql_fetch_array() instead of row:

    while($row = mysql_fetch_array($result)) {
       echo "Study: " . $row[1] . " - " . $row[5];
       // but now with mysql_fetch_array() you can do this instead of the above
       // line (substitute userID and username with actual database column names)...
       echo "Study: " . $row["userID"] . " - " . $row["username"];
    }
    
    0 讨论(0)
  • 2020-12-21 18:43

    mysql_fetch_row fetches each row one at a time. In order to retrieve multiple rows, you would use a while loop like this:

    while ($row = mysql_fetch_row($result))
    {
        // code
    }
    
    0 讨论(0)
提交回复
热议问题