2015-08-21 44 views
0

我想从while循环中获取所有记录。我无法从查询中获取所有行。它只显示第一行。 我的代码中有什么问题吗?MySQLI循环数据

function Connect($DB_HOST = 'localhost', $DB_USER = 'root', $DB_PASS = '', $DB_NAME = 'bodhilms') 
     { 
      $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
      if ($mysqli->connect_errno) { 
       printf("Connect failed: %s\n", $mysqli->connect_error); 
       exit(); 
      }  
      return $mysqli; 
     } 

    function GetCoeficient($coeficient = false, $con) 
    { 
     if(!$con) 
     return 0;  

     $result = array(); 
     $sql[] = "SELECT * FROM users ";  

     if($coeficient != false) 
     $sql[] = "WHERE username = '".$coeficient."' ORDER BY u.id"; 

     //print_r($coeficient); 
     $query = $con->query(implode(" ",$sql)); 
     //print_r($query); 

     while($row = $query->fetch_assoc()) 
     { 
      $result[] = $row; 
     } 
     return (!empty($result))? $result : 0; 
    } 

    $con      = Connect(); 
    $result      = GetCoeficient($coeficient,$con); 

    $username = $result[0]['username']; 
    $firstname = $result[0]['firstname']; 
    $lastname = $result[0]['lastname']; 
    $email = $result[0]['email']; 
+0

为什么你会比一行多用相同的用户名? – Barmar

+0

您正在调用'GetCourse()',但您发布了'GetCoeficient()'的定义。你可以显示GetCourse()的定义吗? – Barmar

+0

调用该函数后,您只需设置'$ result [0]'中的变量,因此您只能获得第一行。 – Barmar

回答

0

首先,要确保mysql的信息是正确的,如port。 ,我不知道你$result = Getcourse($coeficient,$con);代码中,VAR coeficient怎么来from.Then 你可以试试下面的代码:

$mysqli=new mysqli("localhost","root","root","123"); 
$query="select * from test"; 
$result=$mysqli->query($query); 
if ($result) { 
     if($result->num_rows>0){ 
        while($row =$result->fetch_array()){ 
          echo ($row[0])."<br>"; 
          echo ($row[1])."<br>"; 
          echo ($row[2])."<br>"; 
          echo ($row[3])."<br>"; 
          echo "<hr>"; 
        } 
     } 
}else { 
     echo 'failure'; 
} 
$result->free(); 
$mysqli->close();