简体   繁体   English

PHP MySQL 只打印查询中的最后一行

[英]PHP MySQL Only Printing Last Row in Query

Is it possible to get different output when you run the exact same query from PHP vs. PHPMyAdmin?当您从 PHP 和 PHPMyAdmin 运行完全相同的查询时,是否可能获得不同的输出? When I run当我跑

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

I get the correct output from PHPMyAdmin but a different (incorrect) result from my PHP code above.我从 PHPMyAdmin 得到了正确的输出,但从我上面的 PHP 代码得到了不同(不正确)的结果。 The following is my SQL class I use.以下是我使用的 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 

?>

I call this class as follows...我将这个类称为如下...

$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);

The PHPMyAdmin prints all the correct rows but the PHP only prints the very last row. PHPMyAdmin 打印所有正确的行,但 PHP 只打印最后一行。

Here is your issue, a mistake in the executeQuery() method这是您的问题, 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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM