Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] cambiar a mysqli

Estas en el tema de cambiar a mysqli en el foro de PHP en Foros del Web. Hola, Tengo una web muy grande y usa mysql, y debo tarde o temprano migrar a mysqli. Tengo unas dudas. Con mysql a veces uso ...
  #1 (permalink)  
Antiguo 30/12/2013, 14:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 11 meses
Puntos: 6
cambiar a mysqli

Hola,
Tengo una web muy grande y usa mysql, y debo tarde o temprano migrar a mysqli.
Tengo unas dudas.
Con mysql a veces uso fetch array, pero en algunos queries uso fetch_object.

He estado mirando mysqli un poco y mis dudas son:
que debo de usar?
siempre mysqli orientado a objetos o usar por procedimientos y solo por objetos cuando lo necesito?

Y hay alguna aplicacion para no hacer la migracion manualmente?
son cientos de paginas.
Gracias si me pueden orientar.

pd. mi host usa:
PHP version 5.3.26
MySQL version 5.5.32-cll-lve

Pero si quiero puedo pedir una version de php superior.
  #2 (permalink)  
Antiguo 30/12/2013, 15:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: cambiar a mysqli

MYSQL y MYSQL son librerías de PHP, para acceder a MySQL, pero no son parte del servidor MySQL. Es programación.

Este tema lo debes consultar en el Foro de PHP.

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 31/12/2013, 05:45
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: cambiar a mysqli

No se q que te referis con grande, pero yo antes probaria con optimizar la base de datos(creacion de indices, actualizar lo indices, optiomizar las consultas, etc). Te podes llegar a sorprender con los resultados.
  #4 (permalink)  
Antiguo 31/12/2013, 06:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: cambiar a mysqli

Cita:
Iniciado por luis010182 Ver Mensaje
No se q que te referis con grande, pero yo antes probaria con optimizar la base de datos(creacion de indices, actualizar lo indices, optiomizar las consultas, etc). Te podes llegar a sorprender con los resultados.
Gracias, pero el problema no es su eficacia, sino que mysql es obsoleto,
no sé hasta cuando existirá, pero he entendido que se debe migrar a mysqli, lo cual significa hacer cambios en el código php.
  #5 (permalink)  
Antiguo 31/12/2013, 12:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: cambiar a mysqli

Exactamente, es obsoleto y se espera que no se le continúe más. De hecho, ya no tiene versiones nuevas, y creo que tampoco soporte.
Infortunadamente los cambios entre uno y otro son bastantes, numerosos, y no pasan simplemente por cambiar un nombre de función por otro, ya que funciones de similar nombre y para el mismo uso pueden requerir parámetros distintos. Deberás reescribir cantidades de código,e incluso replantear lógicas completas.
Es posible que haya herramientas de migración, pero siempre (y lo digo cono conocimiento de causa), una migración deja muchas cosas que hay que limpiar a mano.
En esas cosas, para ciertos desarrollos es mejor partir de cero e ir reemplazando las funcionalidades una a una.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 31/12/2013, 12:13
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: cambiar a mysqli

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Exactamente, es obsoleto y se espera que no se le continúe más. De hecho, ya no tiene versiones nuevas, y creo que tampoco soporte.
Infortunadamente los cambios entre uno y otro son bastantes, numerosos, y no pasan simplemente por cambiar un nombre de función por otro, ya que funciones de similar nombre y para el mismo uso pueden requerir parámetros distintos. Deberás reescribir cantidades de código,e incluso replantear lógicas completas.
Es posible que haya herramientas de migración, pero siempre (y lo digo cono conocimiento de causa), una migración deja muchas cosas que hay que limpiar a mano.
En esas cosas, para ciertos desarrollos es mejor partir de cero e ir reemplazando las funcionalidades una a una.
Puf, habrá que hacerlos de puñado en puñado,
y referente de usar orientado al objetos o procedimiento, me imagino que lo ideal es usar mysqli orientado a objetos donde uso fetch_oject y procedimiento donde no uso objetos, por la similitud y para no tener que cambiar tantas cosas.
Gracias,
  #7 (permalink)  
Antiguo 01/01/2014, 05:05
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: cambiar a mysqli

Objetos o Estructurado, esa pregunta esta ligada a tu "costumbre" para programar, si estas acostumbrado a trabajar por estructura en "comun" y no OP, programar por progresión, te ahorrara varios dolores de cabeza, sin embargo usar el modo "objetivo" te ayuda a crear programas mas grandes y mantener un mejor orden ( los objetos no requieren de identificadores "link, de conexión" )

si miras la sintaxis que se muestra como ejemplo en php, puedes notar la diferencia

OP
Código PHP:
$mysqli = new mysqli("localhost""my_user""my_password""world");

$query "SELECT * FROM xx LIMIT 0, 10";

if (
$result $mysqli->query($query))
{
    
/* obtener array asociativo */
    
while ($row $result->fetch_assoc())
    {
        
printf ("%s (%s)\n"$row["Name"], $row["CountryCode"]);
    }

    
/* liberar el resultset */
    
$result->free();
}

/* cerrar la conexión */
$mysqli->close(); 

PD
Código PHP:
$link mysqli_connect("localhost""my_user""my_password""world");

$query "SELECT * FROM xx LIMIT 0, 10";

if (
$result mysqli_query($link$query))
{

    
/* obtener array asociativo */
    
while ($row mysqli_fetch_assoc($result))
    {
        
printf ("%s (%s)\n"$row["Name"], $row["CountryCode"]);
    }

    
/* liberar el conjunto de resultados */
    
mysqli_free_result($result);
}

/* cerrar la conexión */
mysqli_close($link); 
el problema del LINK y los las funciones, para evitar tener que re-declarar "global $link" dentro de una función, puedes usar una variable "global", aunque si usas plugins de terceros, no es muy recomendable


Código PHP:
$GLOBALS['link'] = mysqli_connect("localhost""my_user""my_password""world");

// y luego...

$result mysqli_query($GLOBALS['link'], $query
espero haber ayudado, suerte con la portacion!
  #8 (permalink)  
Antiguo 01/01/2014, 07:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: cambiar a mysqli

Cita:
Iniciado por nksn Ver Mensaje
Objetos o Estructurado, esa pregunta esta ligada a tu "costumbre" para programar, si estas acostumbrado a trabajar por estructura en "comun" y no OP, programar por progresión, te ahorrara varios dolores de cabeza, sin embargo usar el modo "objetivo" te ayuda a crear programas mas grandes y mantener un mejor orden ( los objetos no requieren de identificadores "link, de conexión" )

si miras la sintaxis que se muestra como ejemplo en php, puedes notar la diferencia

Gracias, lo voy a mirar muy detalladamente cuando me pongo en ello.
La verdad es que uso ambos, si lo tengo bien entendido,
la mayoría de las paginas estan en comun y su output es asi, y me imagino que con mysqli comun el output sería igual:
Código PHP:
$row["fvuelta"] = str_replace("00-00-00"""$row["fvuelta"] );
echo 
"<tr> \n";
echo 
"<td>".$row["ffecha"]."</td> \n";
echo 
"<td>".$row["hora"]."</td> \n"
pero tambien uso mysql_fetch_object y el output es asi y me parece que en mysql OP seguría siendo igual:
Código PHP:
$row->iden "<a href=\"edit_reserva_diario.php?id=".$row->id."\"><img src=\"imagenes/button_edit.png\" border=0></a>";}
elseif (
$row->iden=="2"){
echo 
"<td>"$row->lleg ."</td><td>"$row->tipo .
Si es asi, para tener que hacer los cambios menos posibles y no tengo que tocar el output pues lo más facil si lo entiendo bien es reescribir el común con comun y el mysql_fetch_object con mysqli OP,
es decir usar ambas, al menos en los documentos que ya tengo de antes.
Gracias
  #9 (permalink)  
Antiguo 01/01/2014, 12:55
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: cambiar a mysqli

si, es exactamente igual, fetch_array y fetch_assoc retornan el mismo valor que la libreria mysql

Etiquetas: mysql, mysqli, sql
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 14:19.