Esta es la original que quiero pasar a PDO, basicamente es donde ocurre la magia
Código:
function query($query)
{
function mysqli_result($res,$row=0,$col=0){
$numrows = mysqli_num_rows($res);
if ($numrows && $row <= ($numrows-1) && $row >=0){
mysqli_data_seek($res,$row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
if (isset($resrow[$col])){
return $resrow[$col];
}
}
return false;
}
// Primero modificamos el query para averiguar la cantidad total
// de registros que devuelve el query.
$query_count = preg_replace("/SELECT(.+?)FROM/s", "SELECT COUNT(*) FROM", $query);
if(!$this->rs( mysqli_query($this->conn(), $query_count) ))
{
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>.");
return false;
}// Fin If
$this->total( mysqli_result($this->rs(), 0) );
$this->totalPaginas(ceil($this->total() / $this->porPagina()));
// Comprobamos que no se intenta acceder a una página que no existe.
if( $this->pagina() > $this->totalPaginas() )
{
$this->error("No exite la página ".$this->pagina()." de resutados. Hay solo un total de ".$this->totalPaginas());
return false;
}// Fin If
// Ahora modificamos el Query del usuario, para poder agregarle
// los límites para realizar la paginación
$query .= " LIMIT ".($this->desde()-1).",".$this->porPagina();
if(!$this->rs( mysqli_query($this->conn(), $query) ))
{
$this->error("Ocurrió un error al ejecutar el query \"$query\". La base dijo : ".mysql_error());
return false;
}// Fin If
$this->registros( mysqli_num_rows( $this->rs() ));
return true;
} // function
function obtenerArray()
{
return mysqli_fetch_array( $this->rs() );
} // function
Y esta es la modificación que hice hasta ahora y es la que me da error.
Código:
function query($query)
{
// Primero modificamos el query para averiguar la cantidad total
// de registros que devuelve el query.
$query_count = preg_replace("/SELECT(.+?)FROM/s", "SELECT COUNT(*) FROM", $query);
$conexion = $this->conn();
$sql = $conexion->prepare($query_count);
$sql->execute();
$resultado = $sql->fetchAll();
if(!$this->rs( $resultado ))
{
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>.");
return false;
}// Fin If
$contando = $this->rs() ;
$this->total( $contando[0][0] );
$this->totalPaginas(ceil($this->total() / $this->porPagina()));
// Comprobamos que no se intenta acceder a una página que no existe.
if( $this->pagina() > $this->totalPaginas() )
{
$this->error("No exite la página ".$this->pagina()." de resutados. Hay solo un total de ".$this->totalPaginas());
return false;
}// Fin If
// Ahora modificamos el Query del usuario, para poder agregarle
// los límites para realizar la paginación
$query .= " LIMIT ".($this->desde()-1).",".$this->porPagina();
$base = $conexion->prepare($query);
$base->execute();
$resultados = $base->fetchAll();
if(!$this->rs( $resultados ))
{
$this->error("Ocurrió un error al ejecutar el query \"$query\". La base dijo : ".mysql_error());
return false;
}// Fin If
$contando2 = $this->rs() ;
//echo $contando2[0][0];
$this->registros( $contando2[0][0]);
return true;
} // function
function obtenerArray()
{
return $this->rs();
} // function
y la verdad no funciona, porque no devuelve el array, y no se que hacer.
Gracias de antemano.