Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/02/2020, 04:34
CanariasHosting
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Cruz de Tenerife
Mensajes: 49
Antigüedad: 15 años
Puntos: 0
Paginación Mysqli a PDO

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.