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!

Comments (8)

  • lalo 9 enero, 2012

    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());
    }
    ?>

    Reply
    • VideoTutoriales 9 enero, 2012

      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!

      Reply
  • lalo 12 enero, 2012

    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());
    }
    ?>

    Reply
  • VideoTutoriales 12 enero, 2012

    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?

    Reply
  • lalo 13 enero, 2012

    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»;
    }

    Reply
  • VideoTutoriales 13 enero, 2012

    ¿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());

    Reply
  • lalo 13 enero, 2012

    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.

    Reply
    • VideoTutoriales 14 enero, 2012

      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!

      Reply

Leave a comment

Sign in to post your comment or sine up if you dont have any account.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Tu software de gestión


Últimas preguntas:

Logo Dkreativo
Vertutoriales