entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cambiar de mysql a mysqli

Necesito actualizar estas funciones para que funcionen con el nuevo php y mysql como tendria que hacer? ya he intentado pero no tengo buenos resultados. Fijense:
mi archivo conectar_bd.php:

function ConectarBD() {
  $vServidor="mysql.nixiweb.com";
  $vUsuarioBD="u229834491_nico ";
  $vClaveBD="qrJDaP7FVH";
  $vNombreBD="u229834491_admin";

  $vConexion=mysql_connect($vServidor, $vUsuarioBD, $vClaveBD);          

  if ($vConexion!=false) {

    $vSeleccionoBD=mysqli_select_db($vConexion,$vNombreBD);
    if ($vSeleccionoBD!=false) {

      return true; 
    }else {
      return false;
    }

  }else {
    return false;
  }

}

function CrearListados($vTabla) {

  $vListado=array();

  if (!ConectarBD()) {
    die ('Error en la conexion');
    return false;    

  }else {

    $vConsulta="SELECT * FROM provincias";
    $vRegistros = mysqli_query($vConsulta);
    if(!$vRegistros){ 
      echo 'MySQL Error: ' . mysql_error().'<br />';
      return false;

    }else {
      $i=1;
      while ($vCadaRegistro = mysql_fetch_row($vRegistros)){
        $vListado[$i]['ID']=$vCadaRegistro[0];
        $vListado[$i]['provincia']= utf8_encode($vCadaRegistro[1]);
        $i++;
      }

      return $vListado;

    }
    DesconectarBD();
  }
}

function DesconectarBD() {
  mysql_close();
}

esta ultima funcion se utiliza para traer una array que se utiliza en un selector en signup.php:

<?php 

      $Registros=array();
      $Tabla="provincia";

      $Registros=CrearListados($Tabla);

      if (!empty($Registros) ){   
        $cntRegistros=count($Registros);
?>

    <div class="form-group">
    <select class="form-control" name="provincia">
        <option value="0">Seleccione una provincia</option>

        <?php for ($i=1; $i<$cntRegistros; $i++) { ?>                      
        <option value="<?php echo $Registros[$i]['ID']; ?>" <?php if (!empty($_POST['provincia']) && $_POST['provincia']==$i) {echo 'selected';} ?> ><?php echo $Registros[$i]['provincia']; ?></option>
        <?php } } ?>                        

    </select>
    </div>

Que cambios creen tengo que hacer? ya he revisado la documentacion de php.net pero sin ningun resultado.

2 Respuestas

1voto

Leonardo-Tadei Puntos227020

Qué errores te da? En qué línea?

Tenés activada la vista de errores por pantalla en el PHP.INI y cambiado a modo desarrollo las opciones de genración de errores?

Si tenés todo esto activado y no obtenés ningún error (cosa bastante improbable): qué parte del código no hace lo que esperás?

A priiori cambiar de mysql* a myslqi* usando sus llamadas funcionales (no las Orientadas a Objetos) consiste solamente en agregar como primer parámetro el identificador de la conexión.

Esto significa que por ejemplo tu función CrearListados() no va a funcionar porque dentro de la función, la variable $ConectarBD no está definida... tenés que agregar como parámero a todas las funciones también la conexión para que pueda ser usada adentro: es una cuestión del ámbito de las variables.

Esto significa también que la función que hace la conexión tiene que devolver la misma, ya que si solo devuelve true o false, no podrás usarla más adelante.

Probá con 1 o 2 funciones y contanos!

1voto

nicogaldo comentado

Tenés activada la vista de errores por pantalla en el PHP.INI y cambiado a modo desarrollo las opciones de genración de errores?

Estaba trabajando con wamp y me trae el array, pero me tira un error o aviso de que la funcion mysql no se esta utilizando mas, y tengo que usar mysqli .

El sitio esta online: click aqui
Justamente ahora he actualizado las funciones según la ayuda de un usuario de stackoverflow pero al parecer sigue sin funcionar.

Esto significa que por ejemplo tu función CrearListados() no va a funcionar porque dentro de la función, la variable $ConectarBD no está definida

No está llamando a una variable, sino a la función ConectarBD

0voto

Leonardo-Tadei comentado

Sí, CrearListados() llama a ConectarBD(), pero lo que te digo es que dentro de CrearListados() te hace falta el resultado de mysqli_connect() porque mysqli_fetch_array() lo necesita.

En StackOverflow te están diciendo lo mismo que yo: fijate que ConectarBD() devuelve $vConexion y luego CrearListados() usa ese valor...

1voto

jonatancastro1 Puntos3110

tienes que cambiar también el conexión de

mysql_connect($vServidor, $vUsuarioBD, $vClaveBD);

a:

mysqli_connect($servidor, $usuario, $pass, $db);

y para iterar los resultados podrías cambiar por:

while ($registro = mysqli_fetch_array($data)){...}

por eso debe ser los avisos. Saludos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta