Tengo una pequeña duda,
Si tengo esta clase mysql
class-mysql.php
Código PHP:
Ver original
<?php class DataBase { private $conexion; private $resource; private $sql; public static $queries; private static $_singleton; public static function getInstance($servidor, $user, $password, $db){ self::$_singleton = new DataBase($servidor, $user, $password, $db); } return self::$_singleton; } private function __construct($servidor, $user, $password, $db){ $this->queries = 0; $this->resource = null; } public function execute(){ return null; } $this->queries++; return $this->resource; } public function alter(){ return false; } return true; } public function loadObjectList(){ if (!($cur = $this->execute())){ return null; } $array[] = $row; } return $array; } public function setQuery($sql){ return false; } $this->sql = $sql; return true; } public function freeResults(){ return true; } public function loadObject(){ if ($cur = $this->execute()){ return $object; } else { return null; } } else { return false; } } //Numero de columnas function num_rows(){ } function __destruct(){ } } ?>
Y lanzo este script de prueba
prueba.php
Código PHP:
Ver original
<?php include('class-mysql.php'); // Hacemos la conexión $db = DataBase::getInstance('localhost','root','pass','hmgroupcat'); // Supongamos que tenemos una tabla de usuarios // Hacemos la consulta: $db->setQuery("SELECT ID,post_date,post_content FROM wp_posts"); // La ejecutamos y al mismo tiempo obtenemos un arreglo de objetos // con los campos especificados en la consulta como propiedades. $datos = $db->loadObjectList(); echo $db->num_rows(); echo "<pre>"; echo "</pre>"; // Los imprimimos directamente en pantalla... foreach($datos as $campo){ echo 'ID: '.$campo->ID; echo 'Nombre: '.$campo->post_name; echo 'Grupo: '.$campo->post_status; echo '<br />'; } ?>
Mi pregunta es si en la linea del
echo $db->num_rows();
¿Se vuelve a lanzar la consulta a la base de datos? de ser así, no es óptimo que la lance dos veces, no?
Se como solucionarlo si hago un count($datos) me dirá cuantas filas me arrojó la consulta SQL, pero si quisiera sacar ese número con la clase mysql sin tener que hacer de nuevo la consulta, ¿habría alguna forma? :S
Muchas gracias de antemano!