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!
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());
}
?>
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!
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());
}
?>
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?
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»;
}
¿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());
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.
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!