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!



8 Respuestas
lalo
enero 9th, 2012 a 5:42 pm
1Hola 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());
}
?>
VideoTutoriales
enero 9th, 2012 a 11:49 pm
2La 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!
lalo
enero 12th, 2012 a 6:14 pm
3Si , 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());
}
?>
VideoTutoriales
enero 12th, 2012 a 10:32 pm
4Segú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?
lalo
enero 13th, 2012 a 5:07 pm
5en 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”;
}
VideoTutoriales
enero 13th, 2012 a 6:10 pm
6¿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());
lalo
enero 13th, 2012 a 7:34 pm
7Me 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.
VideoTutoriales
enero 14th, 2012 a 12:56 am
8Creo 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!
Insertar al RSS los comentarios de esta entrada
Escribe tu comentario