Autor Tema: Deprecated: mysql_connect(): The mysql extension is deprecated and will be remov  (Leído 5382 veces)

__MICHEL__

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola, tengo este php que me da error de variable por estar depreciada (deprecated), necesito ayuda para que me indiquen como la corrigo.

El error que me da es que en la linea 6, que me dice que ya está depreciada, a ver, como que ya esa función esta obsoleta, que tengo que cambiar el método por mysqli, eso me dice el error. Ayudame!

Este es el codigo:
Código: [Seleccionar]
// Wrapper para mysql_connect
//No encuentro ningún articulo que explique que es un wrapper, que alguien aporte //por fa
function conectar($host, $user, $pass, $db) {
 
    // Si no hay conexión fin del script
    if(!$link = mysql_connect ( $host, $user, $pass )) die(mysql_error());
    // Si no se puede seleccionar la db, fin del script
    if(!$dbase = mysql_select_db ( $db, $link )) die(mysql_error());
    return $link;
}
 
// Devuelve un elemento si se especifica $id o toda la tabla caso contrario
function select($link, $id = null) {
    // Tabla users
    $sql = "SELECT * FROM demo_users ";
        // Join con deptos, se hace siempre
    $sql .= "LEFT JOIN demo_depts on demo_depts.depid = demo_users.userdep";
    if ($id)
        $sql .= " WHERE  demo_users.userid = $id";
    if(!$query = mysql_query ( $sql, $link )) die(mysql_error());
    return $query;
}
 
// inserta id con values
function insert($link, $values) {
    // Inicio de la sentencia
    $sql = "INSERT INTO demo_users ( ";
    // Por cada par de clave, valor, concatenar al string sql
    // Primero las claves
    foreach ( $values as $property => $value ) {
 
        $sql .= $property . ",";
    }
    // Quito la ultima coma
    $sql = substr ( $sql, 0, - 1 );
    $sql .= ") VALUES (";
    // Ahora los valores
    foreach ( $values as $property => $value ) {
 
        $sql .= "'$value',";
    }
    $sql = substr ( $sql, 0, - 1 );
    $sql .= ");";
    // Insertar
    if(!$query = mysql_query ( $sql, $link )) die(mysql_error());
    return mysql_insert_id($link);
}
 
// actualiza id con values
function update($link, $id, $values) {
    $sql = "UPDATE demo_users SET ";
 
    foreach ( $values as $property => $value ) {
 
        $sql .= $property . " = '$value', ";
    }
    // Quito la ultima coma
    $sql = substr ( $sql, 0, - 2 ) . " WHERE userid = '$id';";
    if (!$query =  mysql_query ( $sql, $link )) die(mysql_error());
 
    return mysql_affected_rows($link);
}
 
// elimina id
function delete($link, $id) {
    $sql = "DELETE FROM demo_users WHERE userid = '$id';";
    if (!$query = mysql_query ( $sql, $link )) die(mysql_error());
    return true;
}
 
//select con los departamentos
function getDepSelect($link, $id = null)
{
    $sql = "SELECT * FROM demo_depts";
    if(!$query = mysql_query($sql, $link)) die(mysql_error());
    $output = "<select name='depid' id='depid'>";
    $output .= "<option value='-1' selected='selected'>Seleccione....</option>";
    while($deps = mysql_fetch_assoc($query))
    {
        //mostrar los registros, pero si hay un $id, entonces ese registro debe seleccionarse
        $output .= "<option ".($id && $id == $deps['depid']?'selected="selected"':'')." value='{$deps['depid']}'>{$deps['depname']}</option>";
 
    }
    $output .= "</select>";
    return $output;
}
// Un die un poco mas detallado
« Última modificación: 03 de Abril 2016, 11:11 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Michel, en este curso tienes explicado ese problema y cómo solucionarlo, http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

En concreto desde la entrega CU00839B hacia delante se explica todo lo relativo a conexiones y consultas a bases de datos

Saludos

__MICHEL__

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Muchisimas gracias Alex Rodríguez por dedicarme tu tiempo! Dejame buscar a ver, te respondo si solucione el problema. Saludos

__MICHEL__

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Alex, ya lo probe y me sigue dando error, mira lo que me sale:

Advertencia: mysqli_select_db () espera parámetro de 1 a ser mysqli, de cadena indicado en la linea 20.

Es q ese metodo esta medio raro, no se! Mira ver si me puedes ayudar
« Última modificación: 12 de Abril 2016, 20:39 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Vale, con esto si puedo ayudarte, porque lo toco.

Debes usar mysqli->  es php orientado a objetos, debes sustituir todas las funciones por orientacion a objetos.

Ejemplo
       
Código: [Seleccionar]
// Si no hay conexión fin del script
    if(!$link = mysql_connect ( $host, $user, $pass )) die(mysql_error());
    // Si no se puede seleccionar la db, fin del script
    if(!$dbase = mysql_select_db ( $db, $link )) die(mysql_error());
    return $link;
}

Código: [Seleccionar]
$mysqli = new mysqli('localhost', 'Usuario', Password', 'BaseDeDatos');
if ($mysqli -> connect_errno) {
die( "Fallo la conexión a MySQL: (" . $mysqli -> mysqli_connect_errno()
. ") " . $mysqli -> mysqli_connect_error());
}


otra ayuda

    while($deps = mysql_fetch_assoc($query))

 seria
 
 while( $deps = $query->fetch_array(MYSQLI_ASSOC) )
De nada ;)
« Última modificación: 05 de Abril 2016, 20:28 por Lorenzo31 »

__MICHEL__

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola Lorenzo, muchas gracias por responderme, pero no me funciono lo que hiciste, el lio es que tengo otro php que llama a la función conectar, que cuando agrego lo que me hiciste, ya no funciona nada, me dice esto: Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\buscadorprobar\funciones.php on line 20

Sabes que puede ser?
« Última modificación: 12 de Abril 2016, 20:40 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Si, si lo sé. Lo primero es que mysqli_select_db()  es una función, no orientada a objetos ysi la llamas, en un objeto, te dará error.

Segundo, ahí dice que espera un parámetro, cual? El nombre de la base de datos o la conexión previa.

Pero yo te he escrito una forma, orientada a objetos de conectar de una sola vez al servidor y elegir base de datos. Luego ya no necesitas el fichero de conexión que te está dando error sólo usa:
$mysqli = new mysqli('localhost', 'Usuario', Password', 'BaseDeDatos');
      if ($mysqli -> connect_errno) {
         die( "Fallo la conexión a MySQL: (" . $mysqli -> mysqli_connect_errno()
         . ") " . $mysqli -> mysqli_connect_error());
         }

Cambiando los nombres x los datos de tu servidor y base de datos.

Saludos.

__MICHEL__

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Lorenzo, muchas gracias por ayudarme, pero no funciona, ya intentare de buscar otro codigo o no se, ya eso me tiene estresado jajajajajajaja. Dale cuidate y gracias por dedicarme tu tiempo!

Saludos
« Última modificación: 12 de Abril 2016, 20:40 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Juas, pega el código completo que quieres arreglar y yo te lo hago mañana, seguro que son cuatro comandos.
Saludos.

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Bueno, como no lo has vuelto a escribir, te dejo el código inicial, orientado a objetos, no lo he compilado porque la base de datos la tienes tu, no yo.
Debes introducir los datos de la base de datos, donde te indico.

Si falla algo, serán problemas de simple sintaxis, si estás contento ya sabes, agradeceselo al foro y a sus administradores que no dejan de enseñar cosas (a mi muchas).

Saludos Michel.

Código: [Seleccionar]

<?php
// Wrapper para mysql_connect
//Un wrapper es un contenedor, en html5, sirve para poner dentro un trozo de código, generalmente una parte del body
function conectar($host$user$pass$db) { 
    
//aquí conectará a tu base de datos
    
$link = new mysqli('$host''$user''$pass''$db'); 
      if (
$link -> connect_errno) {
         die( 
"Fallo la conexión a MySQL: (" $link -> mysqli_connect_errno() 
         . 
") " $link -> mysqli_connect_error());
         }
 return $link;  
}
 
// Devuelve un elemento si se especifica $id o toda la tabla caso contrario
function select($link$id null) {
    
// Tabla users
    
$sql "SELECT * FROM demo_users ";
        
// Join con deptos, se hace siempre
    
$sql .= "LEFT JOIN demo_depts on demo_depts.depid = demo_users.userdep";
    if (
$id)
        
$sql .= " WHERE  demo_users.userid = $id";
    if(!
$query $link->query($sql)){ die(mysql_error()); }
    return 
$query;
}
 
// inserta id con values
function insert($link$values) {
    
// Inicio de la sentencia
    
$sql "INSERT INTO demo_users ( ";
    
// Por cada par de clave, valor, concatenar al string sql
    // Primero las claves
    
foreach ( $values as $property => $value ) {
 
        
$sql .= $property ",";
    }
    
// Quito la ultima coma
    
$sql substr $sql0, - );
    
$sql .= ") VALUES (";
    
// Ahora los valores
    
foreach ( $values as $property => $value ) {
 
        
$sql .= "'$value',";
    }
    
$sql substr $sql0, - );
    
$sql .= ");";
    
// Insertar
      
if(!$query $link->query($sql)){ die(mysql_error()); }
    return 
$link->insert_id;
}
 
// actualiza id con values
function update($link$id$values) {
    
$sql "UPDATE demo_users SET ";
 
    foreach ( 
$values as $property => $value ) {
 
        
$sql .= $property " = '$value', ";
    }
    
// Quito la ultima coma
    
$sql substr $sql0, - ) . " WHERE userid = '$id';";
    if(!
$query $link->query($sql)){ die(mysql_error()); }
 
    return 
$link->affected_rows;
}
 
// elimina id
function delete($link$id) {
    
$sql "DELETE FROM demo_users WHERE userid = '$id';";
   if(!
$query $link->query($sql)){ die(mysql_error()); }
    return 
true;
}
 
//select con los departamentos
function getDepSelect($link$id null)
{
    
$sql "SELECT * FROM demo_depts";
   if(!
$query $link->query($sql)){ die(mysql_error()); }
    
$output "<select name='depid' id='depid'>";
    
$output .= "<option value='-1' selected='selected'>Seleccione....</option>";
    while(
$deps $query->fetch_array(MYSQLI_ASSOC))
    {
        
//mostrar los registros, pero si hay un $id, entonces ese registro debe seleccionarse
        
$output .= "<option ".($id && $id == $deps['depid']?'selected="selected"':'')." value='{$deps['depid']}'>{$deps['depname']}</option>";
 
    }
    
$output .= "</select>";
    return 
$output;
}
?>


« Última modificación: 10 de Abril 2016, 20:42 por Lorenzo31 »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".