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);
...このクラスを呼び出しますここで
executeQuery()
方法では間違いです。詳細を教えてください。結果のA/Bなどを確認して、あなたの質問をよりよく理解することができますか? – JezEmeryあなたが実際にあなたが仮定したものとまったく同じかどうかを確認するためにクエリを印刷しようとしました – e4c5
はい、私はそれを印刷して正しいものでした。それは実行時に実行される方法でしょうか?わからない。私は比較的新しいPHPです。 – user3286381