0
我寫了一個應該打印表格輸出的php代碼。MySQL準備語句失敗
function getPlanets($x, $y) {
$stmt = $this->MySQLConnection->prepare("SELECT * FROM planets WHERE (x >= (? - 50) AND x <= (? + 50)) AND (y >= (? - 50) AND y <= (? - 50))");
$stmt->bind_param("iiii", $x, $x, $y, $y);
$stmt->execute();
$stmt->store_result();
if($this->MySQLConnection->errno) {
printf("SQL-Error: %s\n" + $this->MySQLConnection->error);
}
if($stmt->num_rows == 0) {
return json_encode(array("error" => "0"), JSON_PRETTY_PRINT);
}
$infoArray = array();
while($obj = $stmt->get_result()->fetch_object()) {
$infoArray["id"] = $obj->id;
$infoArray["name"] = $obj->name;
$infoArray["x"] = $obj->x;
$infoArray["y"] = $obj->y;
$infoArray["systems"] = $obj->systems;
}
}
問題是,num_rows始終返回「0」。 如果我使用普通的MySQLi-Query,它使用相同的SQL-Command。
注:與建議重寫,MySQL不能在索引使用範圍掃描與領先的X或Y的列。 – spencer7593
謝謝,我試過了,但它不起作用。如果我使用bind_result,則變量全部爲空。 – ForJ9
你正在獲取一個對象,但試圖把它當作一個數組......'var_dump($ obj)'會告訴你你必須處理的事情。 –