PHP MySQL仅在查询中打印最后一行

时间:2017-01-06 09:04:26

标签: php mysql sql

当您从PHP与PHPMyAdmin运行完全相同的查询时,是否可以获得不同的输出?我跑的时候

$sql = "SELECT IF(PersonA=200, PersonB, PersonA) AS Person 
FROM People 
WHERE PersonA=200 OR PersonB=200;";

我从PHPMyAdmin获得了正确的输出,但是上面的PHP代码得到了不同的(不正确的)结果。以下是我使用的SQL类。

<?php

class SQLQueryExecutor {

    private $queryString; 
    private $conn; 
    private $db; 
    private $host; 
    private $username; 
    private $password;

    public function __construct($queryString, $db, $host, $username, $password) {

       $this->queryString = $queryString;
       $this->conn = NULL;
       $this->db = $db;
       $this->host = $host;
       $this->username = $username;
       $this->password = $password;

   }

   // make connection to mysql database 
   public function makeConnection() {

    $this->conn = new mysqli($this->host, $this->username, $this->password, $this->db);

    if ($this->conn->connect_error) {
        die("Connection failed: " . $this->conn->connect_error);
    } 
   } 

   // execute query
   public function executeQuery() {

    if ($this->conn != NULL)
    {
        $result = mysqli_query($this->conn, $this->queryString);
        $rows = Array();

        if ($result !== False) // resource returned?
          {
               while($row=mysqli_fetch_assoc($result))
           {
                  $rows= $row;
               }

               return $rows;
        }
    }

    return NULL;

   }

   // close sql connection
   public function closeConnection() {

    mysql_close($this->conn);

   } 
} // class 

?>

我将此课程称为如下......

$user = $_GET['User_ID'];
$sql = "
  SELECT IF(PersonA=$user, PersonB, PersonA) AS Person 
 FROM People 
 WHERE PersonA=$user OR PersonB=$user;";

 $newSQLQueryExecutor = new SQLQueryExecutor($sql, "blah","blah", "blah", "blah");
 $newSQLQueryExecutor->makeConnection();
 $rows = $newSQLQueryExecutor->executeQuery();
 $friends = Array("friends" => $rows);
 $newSQLQueryExecutor->closeConnection();

 print_r($friends);

PHPMyAdmin打印所有正确的行,但PHP只打印最后一行。

1 个答案:

答案 0 :(得分:1)

这是您的问题,executeQuery()方法

中的错误
public function executeQuery() {

    if ($this->conn != NULL) {
        $result = mysqli_query($this->conn, $this->queryString);
        $rows = Array();

        if ($result !== False) { // resource returned?
            while($row=mysqli_fetch_assoc($result)) {
                $rows[] = $row;
    // amended       ^^
            }
            return $rows;
        }
    }
    return NULL;
}