Zbudowałem klasę, która wykorzystuje możliwości wbudowanej w PHP klasy MySQLi i ma na celu uproszczenie interakcji z bazą danych. Jednak przy użyciu metody OOP mam trudny czas ze zmienną instancji num_rows zwracającą poprawną liczbę wierszy po uruchomieniu zapytania. Spójrz na migawkę mojej klasy ...PHP MySQLi num_rows Zawsze zwraca 0
class Database {
//Connect to the database, all goes well ...
//Run a basic query on the database
public function query($query) {
//Run a query on the database an make sure is executed successfully
try {
//$this->connection->query uses MySQLi's built-in query method, not this one
if ($result = $this->connection->query($query, MYSQLI_USE_RESULT)) {
return $result;
} else {
$error = debug_backtrace();
throw new Exception(/* A long error message is thrown here */);
}
} catch (Exception $e) {
$this->connection->close();
die($e->getMessage());
}
}
//More methods, nothing of interest ...
}
Oto przykład użycia:
$db = new Database();
$result = $db->query("SELECT * FROM `pages`"); //Contains at least one entry
echo $result->num_rows; //Returns "0"
exit;
Dlaczego to nie jest dokładne? Inne wartości z obiektu wynikowego są dokładne, na przykład "liczba_pola". Każda pomoc jest bardzo doceniana.
Dziękuję za poświęcony czas.
Gahh ... To było tak łatwe. Dziękuję za wskazanie tego. Zarówno przykład strony PHP, jak i moje przykładowe zapytania wykorzystywały stałą "MYSQLI_USE_RESULT". Usunąłem to i działa jak urok! Dzięki za twoją pomoc, Phil! –
Tylko uwaga do używania MYSQLI_USE_RESULT: [** PHP mysql :: query **] (http://es1.php.net/manual/en/mysqli.query.php) _Jeśli używasz MYSQLI_USE_RESULT wszystkie kolejne wywołania będą return error Polecenia niezsynchronizowane, chyba że wywołasz [** mysqli_free_result() **] (http://es1.php.net/manual/en/mysqli-result.free.php) _ –