He creado una clase que aprovecha las capacidades de la clase MySQLi incorporada de PHP, y está destinada a simplificar la interacción de la base de datos. Sin embargo, utilizando un enfoque OOP, estoy teniendo dificultades con la variable de instancia num_rows que devuelve el número correcto de filas después de ejecutar una consulta. Echar un vistazo a una instantánea de mi clase ...PHP MySQLi num_rows Siempre devuelve 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 ...
}
Aquí es un ejemplos de uso:
$db = new Database();
$result = $db->query("SELECT * FROM `pages`"); //Contains at least one entry
echo $result->num_rows; //Returns "0"
exit;
¿Cómo es que esto no es exacto? Otros valores del objeto de resultado son precisos, como "field_count". Cualquier ayuda es muy apreciada.
Gracias por su tiempo.
Gahh ... Era tan fácil. Gracias por señalar eso. Tanto el ejemplo del sitio de PHP como mis consultas de ejemplo usaban la constante "MYSQLI_USE_RESULT". Lo eliminé y funciona como un encanto! Gracias por tu ayuda, Phil! –
Solo una nota para el uso de MYSQLI_USE_RESULT: [** PHP mysql :: query **] (http://es1.php.net/manual/en/mysqli.query.php) _Si usa MYSQLI_USE_RESULT todas las llamadas subsiguientes Los comandos de error de retorno no están sincronizados a menos que llame a [** mysqli_free_result() **] (http://es1.php.net/manual/en/mysqli-result.free.php) _ –