2017-01-06 9 views
-1

PHPとPHPMyAdminの全く同じクエリを実行すると、異なる出力を得ることはできますか?実行時PHP MySQLだけがクエリの最終行を出力する

$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 

?> 

次のように私はPHPMyAdminのがすべて正しい行を出力しますが、PHPは非常に最後の行を出力します。

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

...このクラスを呼び出しますここで

+0

executeQuery()方法では間違いです。詳細を教えてください。結果のA/Bなどを確認して、あなたの質問をよりよく理解することができますか? – JezEmery

+0

あなたが実際にあなたが仮定したものとまったく同じかどうかを確認するためにクエリを印刷しようとしました – e4c5

+0

はい、私はそれを印刷して正しいものでした。それは実行時に実行される方法でしょうか?わからない。私は比較的新しいPHPです。 – user3286381

答えて

1

を使用すると、同じデータソースを指していると仮定すると、異なる結果を得るためにいかなる理由があってはならない、あなたの問題、

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; 
} 
+0

できます!!どうもありがとう :):) – user3286381

関連する問題