Foros del Web » Programando para Internet » PHP »

PHP OO Convertir clase de mysql_* a PDO o mysqli_*

Estas en el tema de Convertir clase de mysql_* a PDO o mysqli_* en el foro de PHP en Foros del Web. Buen día a todos En un proyecto para un blog personal estoy usando una clase de Diego Romero, el enlace: http://driverop.com.ar/php_html/dbutil . Ahora, sabiendo bien ...
  #1 (permalink)  
Antiguo 12/03/2014, 22:37
Avatar de bryanjhv  
Fecha de Ingreso: marzo-2013
Ubicación: Cajamarca
Mensajes: 35
Antigüedad: 11 años, 1 mes
Puntos: 3
Pregunta Convertir clase de mysql_* a PDO o mysqli_*

Buen día a todos
En un proyecto para un blog personal estoy usando una clase de Diego Romero, el enlace: http://driverop.com.ar/php_html/dbutil.
Ahora, sabiendo bien que la extensión por defecto de PHP para MySQL (mysql_*) va a ser eliminada, quiero migrar a PDO preferiblemente.
Mi pregunta es: ¿cómo podría convertir dicha clase toda a PDO?

P.D.: tengo los siguientes avances:
Código PHP:
<?php

namespace titssphpclasses
;

abstract class 
DB_Abstract {
    
    protected 
$_conn null;
    
    protected 
$_err = array(
        
'is'    => false,
        
'msg'    => '',
        
'num'    => 0
    
);
    
    protected 
$_row = array(
        
'num'    => 0,
        
'aff'    => 0
    
);
    
    protected 
$_result null;
    
    public function 
__construct() {
        
$this->connect(
            
DB_HOST,
            
DB_USER,
            
DB_PASS,
            
DB_NAME,
            
DB_PORT
        
);
    }
    
    abstract protected function 
checkError();
    
    abstract protected function 
connect($host$user$pass$name$port/* = null*/);
    
    abstract protected function 
disconnect();
    
    abstract protected function 
isConnected();
    
    abstract protected function 
query($sql, array $data);
    
    abstract protected function 
insert($table, array $data);
    
    abstract protected function 
select($table, array $fields$where/* = null*/);
    
    abstract protected function 
update($table, array $data$where/* = null*/);
    
    abstract protected function 
delete($table$where);
    
    abstract protected function 
first();
    
    abstract protected function 
next();
    
    abstract protected function 
last();
    
    abstract protected function 
seek($pos);
    
    abstract protected function 
seekBy($table$field$value$order/* = null*/);
    
    abstract protected function 
setUTF8($utf8/* = true*/);
    
}

?>
Además de:
Código PHP:
<?php

namespace titssphpclasses
;

class 
DB_PDO extends DB_Abstract {
    
    private function 
checkError(PDOStatement $stm null) {
        
$pdo $this->_conn;
        if (!
is_null($stm)) {
            
$pdo $stm;
        }
        
$info $pdo->errorInfo();
        
$this->_err['num'] = is_null($info[1]) ? $info[1];
        
$this->_err['is'] = $this->_err['num'] != 0;
        
$this->_err['msg'] = $info[2];
        return 
$this->_err['is'];
    }
    
    public function 
connect($host$user$pass$name$port null) {
        
$dsn "mysql:host=$host;dbname=$name";
        if (
is_int($port) && $port 0) {
            
$dsn .= ";port=$port";
        }
        try {
            
$this->_conn = new PDO($dsn$user$pass, array(
                
PDO::ATTR_ERRMODE                => PDO::ERRMODE_WARNING,
                
PDO::ATTR_DEFAULT_FETCH_MODE    => PDO::FETCH_ASSOC,
                
PDO::ATTR_AUTOCOMMIT            => false
            
));
        } catch (
PDOException $e) {
            
$this->_err['is'] = true;
            
$this->_err['num'] = $e->getCode();
            
$this->_err['msg'] = explode('] '$e->getMessage())[2];
        }
        return 
$this->checkError();
    }
    
    public function 
disconnect() {
        
$this->_conn null;
    }
    
    public function 
isConnected() {
        return 
is_a($this->_conn'PDO');
    }
    
    public function 
query($sql, array $data) {
        
$this->_row['num'] = 0;
        
$stm $this->_conn->prepare($sql);
        foreach (
$data as $key => $value) {
            
$stm->bindParam(':' $key$value);
        }
        
$stm->execute();
        if (!
$this->checkError($stm)) {
            
        }
    }
    
    public function 
insert($table, array $data) {
        
    }
    
    public function 
select($table, array $fields$where) {
        
    }
    
    public function 
update($table, array $data$where) {
        
    }
    
    public function 
delete($table$where) {
        
    }
    
    public function 
first() {
        
    }
    
    public function 
next() {
        
    }
    
    public function 
last() {
        
    }
    
    public function 
seek($pos) {
        
    }
    
    public function 
seekBy($table$field$value$order null) {
        
    }
    
    public function 
setUTF8($utf8 true) {
        
$this->_result $this->_conn->query('SET NAMES ' . ($utf8 'utf8' 'latin1'));
        return 
$this->checkError();
    }
    
}

?>
Gracias de antemano por su respuesta.
P.D. 2: El backslash se autoelimina al escribir el código.
  #2 (permalink)  
Antiguo 13/03/2014, 10:38
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: Convertir clase de mysql_* a PDO o mysqli_*

reemplada rodos los mysql por mysqli
  #3 (permalink)  
Antiguo 13/03/2014, 19:53
Avatar de bryanjhv  
Fecha de Ingreso: marzo-2013
Ubicación: Cajamarca
Mensajes: 35
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: Convertir clase de mysql_* a PDO o mysqli_*

Por favor, necesito algo realmente bueno. No es así de cambiar todo por "mysqli", porque si uno ve la documentación de PHP, mysqli es una clase, y las funciones devuelven objetos, no "resources".
Me gustaría que las respuestas fueran de calidad, no cualquier cosa con tal de aparecer en algún foro.
  #4 (permalink)  
Antiguo 13/03/2014, 19:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Convertir clase de mysql_* a PDO o mysqli_*

Cita:
Iniciado por bryanjhv Ver Mensaje
Por favor, necesito algo realmente bueno. No es así de cambiar todo por "mysqli", porque si uno ve la documentación de PHP, mysqli es una clase, y las funciones devuelven objetos, no "resources".
Me gustaría que las respuestas fueran de calidad, no cualquier cosa con tal de aparecer en algún foro.
Me sorprende tu respuesta, si leyeras el manual también encontrarías:

a) Una guía de migración de MySQL a MySQLi
b) MySQL también se puede usar de forma no-OOP

Ahora, ¿cómo que respuestas de calidad?

Yo también espero preguntas de calidad (inteligentes).

Cita:
¿cómo podría convertir dicha clase toda a PDO?
Eso se responde sólo: lee el manual y estudia los puntos (a) y (b).
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 13/03/2014, 20:04
Avatar de bryanjhv  
Fecha de Ingreso: marzo-2013
Ubicación: Cajamarca
Mensajes: 35
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: Convertir clase de mysql_* a PDO o mysqli_*

Ok, gracias, le daré una vista a los temas que pusiste. Sólo que con PDO no creo que pase lo mismo así de fácil, ¿o sí?
  #6 (permalink)  
Antiguo 13/03/2014, 20:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Convertir clase de mysql_* a PDO o mysqli_*

Cita:
Iniciado por bryanjhv Ver Mensaje
Ok, gracias, le daré una vista a los temas que pusiste. Sólo que con PDO no creo que pase lo mismo así de fácil, ¿o sí?
A decir verdad son paradigmas diferentes, si sólo vas a usar MySQLi no es requerido el uso de PDO; sin embargo, se suele emplear PDO por la flexibilidad que ofrece de antemano.

Que claro, para poder usar PDO requieres experiencia usando OOP.

Al final el cambio de paradigma si es algo drástico si jamás has trabajado con consultas preparadas, o si antes solías escapar todo a mano, etc.

No digo que sea rápido adaptarse.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 14/03/2014, 18:33
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: Convertir clase de mysql_* a PDO o mysqli_*

Cita:
Iniciado por bryanjhv Ver Mensaje
Por favor, necesito algo realmente bueno.
Me gustaría que las respuestas fueran de calidad, no cualquier cosa con tal de aparecer en algún foro.
Cita:
Iniciado por pateketrueke Ver Mensaje
Me sorprende tu respuesta, si leyeras el manual también encontrarías:
a) Una guía de migración de MySQL a MySQLi
b) MySQL también se puede usar de forma no-OOP
Ahora, ¿cómo que respuestas de calidad?
Yo también espero preguntas de calidad (inteligentes).
Eso se responde sólo: lee el manual y estudia los puntos (a) y (b).
JAJAJA cada pregunta que se ve por estos laares
El Ma nual DICE CLARO, se puede usar misqli para POO o para PROGAMADORES novatos que hacen preguntas en los foros.
http://cl1.php.net/manual/es/mysqli.query.php

Etiquetas: clases, extension, mysql, mysqli, pdo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.