Hallo
Ich habe ein Script, das ich schon auf vielen Servern unterschiedlicher Anbieter laufen hatte. Jetzt habe ich das erste mal ein Problem damit.
Das ist die originale Version, die eigentlich immer geht.
Das Problem liegt in der Funktion query
Der neue Server kommt irgendwie mit dem isset($query->num_rows) nicht klar. Obwohl ein Wert vorhanden ist, gibt mir isset false aus.
Ich habe leider keine Ahnung, woran das liegen kann. Auf jedem anderem Server läuft es.
Ich habe ein Script, das ich schon auf vielen Servern unterschiedlicher Anbieter laufen hatte. Jetzt habe ich das erste mal ein Problem damit.
PHP-Code:
final class DBMySQLi {
private $link;
public function __construct($hostname, $username, $password, $database) {
$this->link = new mysqli($hostname, $username, $password, $database);
if (mysqli_connect_error()) {
throw new ErrorException('Error: Could not make a database link (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}
$this->link->set_charset("utf8");
}
public function query($sql) {
$query = $this->link->query($sql);
if (!$this->link->errno){
if (isset($query->num_rows)) {
$data = array();
while ($row = $query->fetch_assoc()) {
$data[] = $row;
}
$result = new stdClass();
$result->num_rows = $query->num_rows;
$result->row = isset($data[0]) ? $data[0] : array();
$result->rows = $data;
unset($data);
$query->close();
return $result;
} else{
return true;
}
} else {
throw new ErrorException('Error: ' . $this->link->error . '<br />Error No: ' . $this->link->errno . '<br />' . $sql);
exit();
}
}
Das Problem liegt in der Funktion query
PHP-Code:
if (isset($query->num_rows)) {
PHP-Code:
$query = $this->link->query($sql);
var_dump($query->num_rows);
var_Dump(isset($query->num_rows));
Code:
int(53) bool(false)
Kommentar