Cargar/Actualizar base de datos MySQL desde un archivo con PHP

Bienvenidos a Vertutoriales.com, en esta ocasión os traigo un código en php que ataca a una base de datos en MySQL, el código en cuestión realiza la creación de tablas con sus correspondientes campos e inserción de datos si tuviera. En otras palabras, tomo un archivo de SQL y lo ejecuto.

El código en cuestión es el siguiente:

$sql=file_get_contents(«./base.sql»); //leo el archivo

foreach(explode(«;»,$sql) as $sql_index=>$query){ //recorro el archivo separando por consultas «;»

mysql_query($query); //ejecuto la consulta

echo «<br>ejecutando. <br>».$query; //muestro lo que voy haciendo

}

echo «Base de datos Creada!<br />»;

 

Quedaría conectar con la base de datos, pero no creo que eso os sea un problema si estáis buscando este código

Un saludo!

Carlos Dk

Apasionado por la enseñanza y el SEO

8 comentarios en “Cargar/Actualizar base de datos MySQL desde un archivo con PHP

  • el 9 enero, 2012 a las 5:42 pm
    Permalink

    Hola tengo éste código que jala los nombres completos de una base de datos, los separa en apellido paterno, materno y nombre en una nueva tabla de MySQL, mi duda es: ¿Cómo le hago para que el arreglo sirva para que en dado caso una persona tenga 3 nombres? y cada vez que actualizo la página (osea mi código) me vuelve a almacenar los datos, ¿cómo le hago para verificar que los datos ya han sido guardados anteriormente y que se estarían duplicando, además que de lo mismo que sea PEREZ PEREZ JUAN y perez PerEz JuAn?

    Gracias

    <?php
    echo "»;
    echo «»;
    echo «»;
    echo «»;
    echo «Apellido Paterno»;
    echo «Apellido Materno»;
    echo «Nombres»;
    echo «»;

    $link = mysql_connect(«localhost», «root», «»);
    mysql_select_db(«nombres», $link);
    $result = mysql_query(«SELECT nombre_completo FROM nombres_completos», $link);
    while ($row = mysql_fetch_row($result))
    {
    echo «»;
    $elementos = explode(» «,$row[0]);
    if (($elementos[3]))
    {
    echo «$elementos[0]»;
    echo «$elementos[1]»;
    echo «$elementos[2] $elementos[3]»;
    }
    else
    {
    echo «$elementos[0]»;
    echo «$elementos[1]»;
    echo «$elementos[2]»;
    }

    $sql = «Insert Into nombres_separados(apellido_pat, apellido_mat, nombre) Values (‘$elementos[0]’,’$elementos[1]’,’$elementos[2] $elementos[3]’)»;
    $res=mysql_query($sql) or die(mysql_error());
    }
    ?>

    Respuesta
    • el 9 enero, 2012 a las 11:49 pm
      Permalink

      La comprobación tendrás que realizarla antes de guardarla, es decir, haz una consulta select de los tres campos que vayas a almacenar con respecto a lo que ya está guardado.

      Para diferenciar entre mayusculas y minúsculas puedes utilizar unas funciones que dan PHP ucase y lcase si no recuerdo mal.

      Investiga por ahí, si quieres que te aclare más en profundidad solo tienes que decirlo.

      Un saludo!

      Respuesta
  • el 12 enero, 2012 a las 6:14 pm
    Permalink

    Si , por favor, tengo ya esto, lo separo, lo paso a mayúsculas pero al guardar me dice «Query Was Empty» mi tabla tiene ID(key), apellido_pat, apellido_mat, nombre.

    <?php
    echo "»;
    echo «»;
    echo «»;
    echo «»;
    echo «Apellido Paterno»;
    echo «Apellido Materno»;
    echo «Nombres»;
    echo «»;

    $link = mysql_connect(«localhost», «root», «»);
    mysql_select_db(«nombres», $link);
    $result = mysql_query(«SELECT nombre_completo FROM nombres_completos», $link);
    while ($row = mysql_fetch_row($result))
    {
    echo «»;
    $elementos = explode(» «,$row[0]);
    if (($elementos[3]))
    {
    echo «$elementos[0]»;
    echo «$elementos[1]»;
    echo «$elementos[2] $elementos[3]»;
    }
    else
    {
    echo «$elementos[0]»;

    echo «$elementos[1]»;
    echo «$elementos[2]»;
    }

    $user0=strtoupper($elementos[0]);
    $user1=strtoupper($elementos[1]);
    $user2=strtoupper($elementos[2]);
    $user3=strtoupper($elementos[3]);

    $sql = mysql_query(«SELECT apellido_pat FROM nombres_separados WHERE apellido_pat=’$user0′, apellido_mat=’$user1′, nombre=’$user2′»);
    $resultado=mysql_query($sql) or die (mysql_error());
    if (mysql_num_rows($resultado))
    {
    echo'(Exite registro duplicado)’;
    }
    else
    {
    echo'(No Existen duplicados)’;
    }

    $sql = «Insert Into nombres_separados(apellido_pat, apellido_mat, nombre) Values (‘$user0′,’$user1′,’$user2’)»;
    $res=mysql_query($sql) or die(mysql_error());
    }
    ?>

    Respuesta
  • el 12 enero, 2012 a las 10:32 pm
    Permalink

    Según dice el error, Query Was Empty > la consulta está vacía.

    Revisa las consultas, quizás estás intentando acceder a un registro vacío, puede ser en el Else de la consulta de nombres completos.

    ¿En qué linea te lo devuelve Query Was Empty?

    Respuesta
  • el 13 enero, 2012 a las 5:07 pm
    Permalink

    en la 48-49 segú aquí es donde esta el problema

    consulta = mysql_query(«SELECT * FROM nombres_separados WHERE apellido_pat=$user0 and apellido_mat=$user1 and nombre=$user2»);
    $resultado=mysql_query($consulta) or die (mysql_error());
    if (mysql_num_rows($resultado))
    {
    echo «Exite al menos un registro»;
    }
    else
    {
    echo «No Existen registros»;
    }

    Respuesta
  • el 13 enero, 2012 a las 6:10 pm
    Permalink

    ¿Has probado a copiar esa consulta en phpmyadmin o en algún otro gestor que utilices para la base de datos?

    Es decir, haz un echo de $consulta antes de realizar
    $resultado=mysql_query($consulta) or die (mysql_error());

    Cuando tengas la consulta, copia y pega en el SQL de phpmyadmin, ejecuta y a ver que te dice desde mysql, pegame tanto la consulta como el resultado, en principio lo que pones está correcto. Aunque yo suelo separar el die(mysql_error());

    Respuesta
  • el 13 enero, 2012 a las 7:34 pm
    Permalink

    Me sale esto, No Existen registrosUnknown column ‘PEREZ’ in ‘field list’,

    se me está complicando más de lo debido, lo único que quiero es que si se repite un nombre me mande un msj y ya no lo intrduzca y siga con los siguientes.

    Respuesta
    • el 14 enero, 2012 a las 12:56 am
      Permalink

      Creo que no estás haciendo bien la consulta, la columna «PEREZ» no es un campo de la tabla. Si puedes pegarme la consulta tal y como la has pegado en phpmyadmin sería de mucha utilidad.

      Para hacer lo que me dices, tendrás que contrastar las columnas concadenadas.

      Un saludo!

      Respuesta

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.