Buenas,
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(){
if(!($this->resource = mysql_query($this->sql, $this->conexion))){ return null;
}
$this->queries++;
return $this->resource;
}
public function alter(){
if(!($this->resource = mysql_query($this->sql, $this->conexion))){ 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!