mysql_fetch_array仅在使用while循环时显示第一行

时间:2017-08-23 04:19:06

标签: php

我很快就会遇到使用while循环的问题...我不知道发生了什么事情,所以,我认为我应该寻求帮助,经过大量搜索,我知道 mysql_fetch_array 每次都会返回,因此如果需要从查询中获取所有行,我们应该使用。 在尝试避免并使用 foreach 之后,我发现只是我们不能使用 foreach 而不是而 strong>或者我们可以在 之后将其用作另一个循环。 无论如何,我的问题是:我在数据库中创建了一个存储过程,它使用正常工作,但是当我试图将它放在基于的循环中时一些数据的ID, while循环仅在计算后给了我第一行。 所以,如果有人能看到我能在代码中看到的内容,请不要犹豫。 感谢..

$startdate = $_POST['startdate'];
$enddate = $_POST['enddate'];
$thefinalres="";    
$loop = mysql_query("SELECT * FROM mrh_chains order by id");
        if ($loop){
            while ($row = mysql_fetch_array($loop))
            {
                $theid = $row['id'];
                $thename = $row['name'];
                //CALL PROCEDURE 
                $result = mysql_query("CALL calccommission($theid,'$startdate','$enddate')");
                if ($result){
                    $row2 = mysql_fetch_array($result);
                    if ($row2[0]!=""){
                        $thecommission = $row2[0];
                    } else {
                        $thecommission = "Try to change dates, There are no data on these dates";
                    }
                    $thefinalres .= $thename . " commission: ". $thecommission . "<br/>";
                }
            }

            $value =  array('msg' => 'true' );
            $value["res"] = $thefinalres;

        } else {
            $value =  array('msg' => 'false' );
        }

1 个答案:

答案 0 :(得分:0)

在搜索到looooooooooooooooot后,我找到了的解决方案

$mysqli = new mysqli(  "HOST", "USR", "PWD", "DBNAME" );
$ivalue=1;
$res = $mysqli->multi_query( "CALL myproc($ivalue,@x);SELECT @x" );
if( $res ) {
  $results = 0;
  do {
    if ($result = $mysqli->store_result()) {
      printf( "<b>Result #%u</b>:<br/>", ++$results );
      while( $row = $result->fetch_row() ) {
        foreach( $row as $cell ) echo $cell, "&nbsp;";
      }
      $result->close();
      if( $mysqli->more_results() ) echo "<br/>";
    }
  } while( $mysqli->next_result() );
}
$mysqli->close();

我在这篇文章中找到了答案:https://forums.mysql.com/read.php?52,198596,198717