Foros del Web » Programando para Internet » PHP »

Migrar de mysql a PDO

Estas en el tema de Migrar de mysql a PDO en el foro de PHP en Foros del Web. Hola estuve estudiando informacion sobre PDO pero no logro entenderlo del todo, quisiera saber si hay alguna forma de convertir esta clase mysql a pdo ...
  #1 (permalink)  
Antiguo 12/01/2013, 21:33
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Pregunta Migrar de mysql a PDO

Hola estuve estudiando informacion sobre PDO pero no logro entenderlo del todo, quisiera saber si hay alguna forma de convertir esta clase mysql a pdo

Código PHP:
Ver original
  1. # Mysql
  2.     class Cm_mysql{
  3.        
  4.         # Conexion
  5.         public function Conectar(){
  6.            
  7.             $Conexion = mysql_connect('localhost', 'root', '');
  8.             mysql_select_db('db',$Conexion);
  9.        
  10.         }
  11.        
  12.         # Consulta
  13.         public function Consulta($Consulta){
  14.            
  15.             return mysql_query($Consulta);
  16.            
  17.         }
  18.        
  19.         # Reg_Num
  20.         public function Reg_Num($Consulta){
  21.        
  22.             return mysql_num_rows($Consulta);
  23.        
  24.         }
  25.        
  26.         # Assoc
  27.         public function Assoc($Consulta){
  28.        
  29.             return mysql_fetch_assoc($Consulta);
  30.        
  31.         }
  32.        
  33.         # String Search
  34.         public function Con_Like($Consulta,$Por,$Text){
  35.        
  36.             return mysql_query($Consulta.' WHERE '.$Por.' LIKE '.'"'.$Text.'"');
  37.        
  38.         }
  39.        
  40.     }

Osea seguir manteniendo las mismas funciones para no perder la costumbre
  #2 (permalink)  
Antiguo 12/01/2013, 21:38
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Migrar de mysql a PDO

Aquí hay un manual que muestra como lo hacías con mysql_* y como sería con PDO:

http://wiki.hashphp.org/PDO_Tutorial...SQL_Developers

En inglés pero se entiende bien.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 12/01/2013, 21:44
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Migrar de mysql a PDO

Perfecto!!! esto necesitaba :D

<Se supone que PDO es más fácil que mysql? mysql me parece mucho más sencillo :/ >
  #4 (permalink)  
Antiguo 12/01/2013, 21:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Migrar de mysql a PDO

No es que sea más fácil o más díficil, el problema es que la extensión mysql_* va a quedar obsoleta a partir de PHP 5.5.0.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 12/01/2013, 21:54
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Migrar de mysql a PDO

Lo que no entiendo y quizas mi pregunta este mal, es que PDO esta orientado a objetos? o me parece a mi...
__________________
Zreep
  #6 (permalink)  
Antiguo 12/01/2013, 21:56
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Migrar de mysql a PDO

PDO ya te provee una capa de abstracción para el manejo de base de datos, mas fácil no necesariamente, mejor?? claro y en el manual te hacen una comparacion.

puedes hacer que tu extienda de PDO de manera que apliques la herencia y hagas las mejoras que quieras hacer, además PDO no solo te permite conectarte con mysql, en el foro hay varios temas de clases gestionadas por PDO has una busqueda y seguro encontraras buenos ejemplos

Cita:
Iniciado por zreep Ver Mensaje
Lo que no entiendo y quizas mi pregunta este mal, es que PDO esta orientado a objetos? o me parece a mi...
Si le hechas un ojo esta claro que si esta orientado a objetos, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 12/01/2013, 22:00
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Migrar de mysql a PDO

Cita:
Iniciado por zreep Ver Mensaje
Lo que no entiendo y quizas mi pregunta este mal, es que PDO esta orientado a objetos? o me parece a mi...
Si orientado a objetos, pero también tenemos mysqli, muy parecida a mysql y tiene estilo por procedimientos y orientado a objetos.

La idea es no seguir usando mysql_* obsoleta.

Edit: No me canso de hacerle publicidad a estos mensajes del manual.

Cita:
Se recomienda usar las extensiones mysqli o PDO_MySQL. No se recomienda usar la extensión mysql antigua para nuevos desarrollos, ya que ha sido declarada obsoleta a partir de PHP 5.5.0 y será eliminada en el futuro.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 12/01/2013 a las 22:07
  #8 (permalink)  
Antiguo 12/01/2013, 22:07
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Migrar de mysql a PDO

Cita:
Iniciado por andresdzphp Ver Mensaje
Si orientado a objetos, pero también tenemos mysqli, muy parecida a mysql y tiene estilo por procedimientos y orientado a objetos.

La idea es no seguir usando mysql_* obsoleta.
apesar de que tienes razón y estoy claro que manejas los objetos, creo que ya deberíamos de pregonar el "ir perdiendo el miedo a la OOP", el lenguaje cada vez mas va hacía allá, a pesar de que acepta la programación estructurada, si vemos la mayoría de las mejoras están basadas o hechas en objetos, un ejemplo lo que ofrece el slp, PDO, etc.

Creo que es buen momento para sacarle la ventaja al lenguaje con lo que esta brindando, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 12/01/2013, 22:11
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Migrar de mysql a PDO

Osea:

Mysql_* Esta obsoleta a partir de la version 5.5.0.

En tonces, me puedo pasar mejor a mysqli antes que PDO? por que me estoy complicando con PDO si no hago yo las clases me pierdo xD
  #10 (permalink)  
Antiguo 12/01/2013, 22:12
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Migrar de mysql a PDO

Cita:
Iniciado por underwebinfo Ver Mensaje
Osea:

Mysql_* Esta obsoleta a partir de la version 5.5.0.

En tonces, me puedo pasar mejor a mysqli antes que PDO? por que me estoy complicando con PDO si no hago yo las clases me pierdo xD
No hay problema si usas Mysqli, pero PDO no es nada complicado.

Cita:
Iniciado por carlos_belisario Ver Mensaje
apesar de que tienes razón y estoy claro que manejas los objetos, creo que ya deberíamos de pregonar el "ir perdiendo el miedo a la OOP", el lenguaje cada vez mas va hacía allá, a pesar de que acepta la programación estructurada, si vemos la mayoría de las mejoras están basadas o hechas en objetos, un ejemplo lo que ofrece el slp, PDO, etc.

Creo que es buen momento para sacarle la ventaja al lenguaje con lo que esta brindando, saludos
sí, el presente de PHP es la programación orientada a objetos, pero tampoco quería que tomaran eso como una disculpa para seguir usando mysql_*

Por cierto, excelente SPL, el año pasado jugué bastante con esas clases.

PDO lo mejor.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 12/01/2013, 22:17
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Migrar de mysql a PDO

Cita:
Iniciado por underwebinfo Ver Mensaje
Osea:

Mysql_* Esta obsoleta a partir de la version 5.5.0.

En tonces, me puedo pasar mejor a mysqli antes que PDO?
en mi opinión personal creo que PDO te da más ventajas (pero claro es solo mi opinión)

Cita:
Iniciado por underwebinfo Ver Mensaje
por que me estoy complicando con PDO si no hago yo las clases me pierdo xD
en este caso creo que tienes que aprender a sacarle ventaja a las librerías del lenguaje y de terceros, para eso siempre esta el manual que ayuda bastante a conocer los métodos y atributos de las clases conociendo estos y teniendo claro los conceptos de la OOP no debería de ser problemas

Cita:
Iniciado por andresdzphp Ver Mensaje
No hay problema si usas Mysqli, pero PDO no es nada complicado.



sí, el presente de PHP es la programación orientada a objetos, pero tampoco quería que tomaran eso como una disculpa para seguir usando mysql_*

Por cierto, excelente SPL, el año pasado jugué bastante con esas clases.

PDO lo mejor.
SPL es genial yo he jugado un poco con ellas, aunque creo que no lo suficiente :(
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #12 (permalink)  
Antiguo 12/01/2013, 22:30
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Migrar de mysql a PDO

Haber si entendi, no estoy utilizando segun mi entendimiento :p la clase mysqli si no por procedimientos

MySQL:
Código PHP:
Ver original
  1. # Mysql
  2.     class Cm_mysql{
  3.        
  4.         # Conexion
  5.         public function Conectar(){
  6.            
  7.             $Conexion = mysql_connect('localhost', 'root', '');
  8.             mysql_select_db('levr',$Conexion);
  9.        
  10.         }
  11.        
  12.         # Consulta
  13.         public function Consulta($Consulta){
  14.            
  15.             return mysql_query($Consulta);
  16.            
  17.         }
  18.        
  19.         # Reg_Num
  20.         public function Reg_Num($Consulta){
  21.        
  22.             return mysql_num_rows($Consulta);
  23.        
  24.         }
  25.        
  26.         # Assoc
  27.         public function Assoc($Consulta){
  28.        
  29.             return mysql_fetch_assoc($Consulta);
  30.        
  31.         }
  32.        
  33.         # String Search
  34.         public function Con_Like($Consulta,$Por,$Text){
  35.        
  36.             return mysql_query($Consulta.' WHERE '.$Por.' LIKE '.'"'.$Text.'"');
  37.        
  38.         }
  39.        
  40.     }

MySQLI
Código PHP:
Ver original
  1. # Mysql
  2.     class Cm_mysql {
  3.        
  4.         protected $Conexion;
  5.        
  6.         # Conexion
  7.         public function Conectar(){
  8.            
  9.             $this->Conexion = mysqli_connect('localhost', 'root', '','levr');
  10.        
  11.         }
  12.        
  13.         # Consulta
  14.         public function Consulta($Consulta){
  15.            
  16.             return mysqli_query($this->Conexion,$Consulta);
  17.            
  18.         }
  19.        
  20.         # Reg_Num
  21.         public function Reg_Num($Consulta){
  22.        
  23.             return mysqli_num_rows($Consulta);
  24.        
  25.         }
  26.        
  27.         # Assoc
  28.         public function Assoc($Consulta){
  29.        
  30.             return mysqli_fetch_assoc($Consulta);
  31.        
  32.         }
  33.        
  34.         # String Search
  35.         public function Con_Like($Consulta,$Por,$Text){
  36.        
  37.             return mysqli_query($this->Conexion,$Consulta.' WHERE '.$Por.' LIKE '.'"'.$Text.'"');
  38.        
  39.         }
  40.        
  41.     }

Esta correcta la migracion?.
  #13 (permalink)  
Antiguo 12/01/2013, 22:31
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Migrar de mysql a PDO

Acá dejo un ejemplo de conexion a una base de datos MySQL...


Código PHP:

$hostmane 
'localhost';
$username 'root';
$pass 'tupass';

try {
$db = new PDO("mysql:host=$hostmane;dbname=phpdb"$username$pass);
echo 
'Conectado a la base de datos';
}
catch (
PDOException $e)
{
echo 
$e->getMessage();

En caso de error, mostraria el mensaje de error que arroja PDOException.


Lo tenia en un manual...
__________________
Zreep
  #14 (permalink)  
Antiguo 12/01/2013, 22:35
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Migrar de mysql a PDO

siempre vi inecesario esta parte del codigo:

Código PHP:
Ver original
  1. $hostmane = 'localhost';
  2. $username = 'root';
  3. $pass = 'tupass';

Por que no introducirlo directamente, te ahooras las variables :/
  #15 (permalink)  
Antiguo 12/01/2013, 22:42
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Migrar de mysql a PDO

Código PHP:

try {
$db = new PDO("mysql:host=localhost;midb"rootmipass);
echo 
'Conectado a la base de datos';
}
catch (
PDOException $e)
{
echo 
$e->getMessage();

Algo asi... estoy tirando por tirar... si esta mal avicen...!
__________________
Zreep
  #16 (permalink)  
Antiguo 12/01/2013, 22:43
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Migrar de mysql a PDO

Cita:
Iniciado por underwebinfo Ver Mensaje
Haber si entendi, no estoy utilizando segun mi entendimiento :p la clase mysqli si no por procedimientos

MySQL:
Código PHP:
Ver original
  1. # Mysql
  2.     class Cm_mysql{
  3.        
  4.         # Conexion
  5.         public function Conectar(){
  6.            
  7.             $Conexion = mysql_connect('localhost', 'root', '');
  8.             mysql_select_db('levr',$Conexion);
  9.        
  10.         }
  11.        
  12.         # Consulta
  13.         public function Consulta($Consulta){
  14.            
  15.             return mysql_query($Consulta);
  16.            
  17.         }
  18.        
  19.         # Reg_Num
  20.         public function Reg_Num($Consulta){
  21.        
  22.             return mysql_num_rows($Consulta);
  23.        
  24.         }
  25.        
  26.         # Assoc
  27.         public function Assoc($Consulta){
  28.        
  29.             return mysql_fetch_assoc($Consulta);
  30.        
  31.         }
  32.        
  33.         # String Search
  34.         public function Con_Like($Consulta,$Por,$Text){
  35.        
  36.             return mysql_query($Consulta.' WHERE '.$Por.' LIKE '.'"'.$Text.'"');
  37.        
  38.         }
  39.        
  40.     }

MySQLI
Código PHP:
Ver original
  1. # Mysql
  2.     class Cm_mysql {
  3.        
  4.         protected $Conexion;
  5.        
  6.         # Conexion
  7.         public function Conectar(){
  8.            
  9.             $this->Conexion = mysqli_connect('localhost', 'root', '','levr');
  10.        
  11.         }
  12.        
  13.         # Consulta
  14.         public function Consulta($Consulta){
  15.            
  16.             return mysqli_query($this->Conexion,$Consulta);
  17.            
  18.         }
  19.        
  20.         # Reg_Num
  21.         public function Reg_Num($Consulta){
  22.        
  23.             return mysqli_num_rows($Consulta);
  24.        
  25.         }
  26.        
  27.         # Assoc
  28.         public function Assoc($Consulta){
  29.        
  30.             return mysqli_fetch_assoc($Consulta);
  31.        
  32.         }
  33.        
  34.         # String Search
  35.         public function Con_Like($Consulta,$Por,$Text){
  36.        
  37.             return mysqli_query($this->Conexion,$Consulta.' WHERE '.$Por.' LIKE '.'"'.$Text.'"');
  38.        
  39.         }
  40.        
  41.     }

Esta correcta la migracion?.
viendo bien tu clase (no la había mirado porque estaba basada en mysql_*), te puedo preguntar que ventaja me da usar tu clase?? porque simplemente lo que haces con tu clase lo puedo hacer directamente con mysqli e incluso mysqli provee un poco mas de métodos, puedes verlo en el manual

Además de esto, siempre es bueno que empecemos ha trabajar basandonos en los standars para nombre de clases, atributos, metodos, etc.

saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #17 (permalink)  
Antiguo 12/01/2013, 22:44
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Migrar de mysql a PDO

no mucho tradusco y ahorro algo de tiempo xD es de caprichoso que soy :p
  #18 (permalink)  
Antiguo 12/01/2013, 22:46
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Migrar de mysql a PDO

no es por desanimarte, sino que puedes sacar más ventaja a la OOP que solo escribir métodos que llamen a otro método :), saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #19 (permalink)  
Antiguo 12/01/2013, 23:23
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Migrar de mysql a PDO

Te estás olvidando de problemas con la inyección SQL

en mysql_* se "solucionaba":

Código PHP:
Ver original
  1. <?php
  2. $results = mysql_query(sprintf("SELECT * FROM table WHERE id='%s' AND name='%s'",
  3.                        mysql_real_escape_string($id), mysql_real_escape_string($name))) or die(mysql_error());
  4. $rows = array();
  5. while($row = mysql_fetch_assoc($results)){
  6.     $rows[] = $row;
  7. }

en PDO se usan las sentencias preparadas, simplemente:

Código PHP:
Ver original
  1. <?php
  2. $stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?");
  3. $stmt->execute(array($id, $name));
  4. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

o de esta forma:

Código PHP:
Ver original
  1. <?php
  2. $stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name");
  3. $stmt->bindValue(':id', $id, PDO::PARAM_INT);
  4. $stmt->bindValue(':name', $name, PDO::PARAM_STR);
  5. $stmt->execute();
  6. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

Se ve más fácil con PDO.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #20 (permalink)  
Antiguo 13/01/2013, 04:48
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Migrar de mysql a PDO

Código PHP:
Ver original
  1. class Cm_Seguridad extends Cm_Mysql{
  2.            
  3.         # --- Proteccion total
  4.         function _Proteger(){
  5.            
  6.             foreach ($_POST as $key => $value) {
  7.                 $_POST[$key] = mysqli_real_escape_string(parent::$Conexion,$value);
  8.                 $_POST[$key] = htmlspecialchars($value);
  9.             }
  10.    
  11.             foreach ($_GET as $key => $value) {
  12.                 $_GET[$key] = mysql_real_escape_string(parent::$Conexion,$value);
  13.                 $_GET[$key] = htmlspecialchars($value);
  14.             }  
  15.            
  16.         }
  17.        
  18.     }

:/ antes de asociar los post y get a variables llamo a esta funcion xD se que no voy a mandar codigo mysql ni nada xD
  #21 (permalink)  
Antiguo 13/01/2013, 09:32
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Migrar de mysql a PDO

amigo lo mejor que puedes hacer es leer el manual, mysqli tambien acepta consultas preparadas, la migración de mysql a mysqli no la hagas nada más por hacerla, además que si le vas a implementar el OOP mysqli ya te provee esa capacidad utiliza esta sacale provecho mira la lista de atributos y métodos que mysqli te brinda, así sacaras un mejor provecho.
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #22 (permalink)  
Antiguo 13/01/2013, 20:36
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Migrar de mysql a PDO

naguara malditos cambios mysql xD , lo voy a entender de una vez por todas -.-', aparte ya tuve algun inconveniente con la funcion _Proteget() y mysqli xD asi que mejor me pongo a estudiarlo :) de pana gracias por los consejos :)

xD

Etiquetas: mysql, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:41.