Using an SQL result in a foreach loop

后端 未结 5 1547
谎友^
谎友^ 2021-01-06 10:36

I feel like I am missing something stupidly obvious here, I am trying to get the results of an SQL query and then using them in a loop. I feel like I am missing something st

相关标签:
5条回答
  • 2021-01-06 10:48

    another option

    $num_rows = mysql_num_rows($result)
    for ($i=0;$i<$num_rows;$i++) {
    $row = mysql_fetch_assoc($result)
    $messageID = $row['messageID'];
    }
    

    You can do anything from here.

    Remember, 1- query into object like $result 2- fetch row at a time from the object into an array which reflects an entire row in the table given your query definition with associative keys or numeric 3- do something with the array

    You will loop through the object row by row and put in $row as an array.

    Cheers

    0 讨论(0)
  • 2021-01-06 10:48

    The return type of the $results = mysql_query($query); is a resource of type object. For example:

    object(mysqli_result)#3 (5) { 
      ["current_field"] => int(0) 
      ["field_count"] => int(3) 
      ["lengths"] => NULL 
      ["num_rows"] => int(2) 
      ["type"] => int(0) 
    }
    

    Since, we are only interested with the table data. We have the pass the resource to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data according to PHP Docs

    We cannot directly use it.

    However, If you are having problem understanding the inner working of while loop i will give you an example.

    <?php
    
        $s = 0;
    
        class deepe {
            function dis(){
                $a = array(2,3,4,5,6);
                $b = $GLOBALS['s'];
                if ( $b < count($a) )
                    return $a[$b];
            }
        }
    
        $chk = new deepe();
    
        while($fac = $chk->dis())
        {
            echo $fac."<br />";
            $GLOBALS['s']++;
        }
    
    ?>
    
    0 讨论(0)
  • 2021-01-06 10:52

    Instead of your foreach(), you should do something like this (see the mysql_query() manual page for more):

    while($result = mysql_fetch_assoc($results)) {
        // your code
    }
    
    0 讨论(0)
  • 2021-01-06 11:00

    You must first fetch your results into an array. Looks like you started to do this but commented it out.

    $results = mysql_query($query);
    //$userData = mysql_fetch_array($results, MYSQL_ASSOC);
    
    $resultset = array();
    while ($row = mysql_fetch_array($results)) {
      $resultset[] = $row;
    }
    
    // $resultset now holds all rows from the first query.
    foreach ($resultset as $result){
     //... etc...
    
    0 讨论(0)
  • 2021-01-06 11:12

    I don't have the reputation to comment, and the above answers are correct, but the php mysql_query() manual page says that

    this extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used

    So now a correct way would be:

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