Foros del Web » Programando para Internet » PHP »

Ayuda con fwrite()

Estas en el tema de Ayuda con fwrite() en el foro de PHP en Foros del Web. Saludos amigas y amigos, estoy tranatndo de pasar unos registros de una base de datos a otra diferente, para ello estoy generando un archivo "clientes.sql". ...
  #1 (permalink)  
Antiguo 17/04/2009, 16:06
 
Fecha de Ingreso: julio-2006
Mensajes: 6
Antigüedad: 18 años, 4 meses
Puntos: 0
Ayuda con fwrite()

Saludos amigas y amigos, estoy tranatndo de pasar unos registros de una base de datos a otra diferente, para ello estoy generando un archivo "clientes.sql".

El problema es que hago un select para buscar las personas que quiero pasar de una BD a la otra.

En el while extraigo los datos de cada uno del grupo seleccionado y creo un string con el INSERT para guardar cada uno en el archivo clientes.sql.

Uso fwrite() dentro del while() para escribir en el archivo clientes.sql los inserts que luego voy a utilizar para ejecutarlos en la otra base de datos.

Y lo que sucede es que solo me esta dejando en el archivo el último registro del grupo.

A ver y les muestro el código:

fopen("sql_clients/clientes.sql","r+w+");
$query = "SELECT * FROM tabla_BD1 WHERE grupo ='".$grupo."'";
$req = mysql_query($query);

if (!$req){
echo "<B>Error ".mysql_errno()." :</B> ".mysql_error()."";
exit;
}

$res = mysql_num_rows($req);
if ($res == 0){
echo "NO HAY REGISTROS";
}else{
while($row = mysql_fetch_array($req)) {

extract($row);

$fec_in=$row['fec_in'];
$nombre=$row['nombre'];
$apellido=$row['apellido'];
.
.
.
.
. $archivox="sql_clients/clientes.sql";

$fp = fopen($archivox, "w");
$insert="INSERT INTO TABLA_BD2(,nombre,apellido,........) VALUES ('$nombre','$apellido','$titulo',.........')\r\n"; //<------------------------- CREO EL INSERT DE CADA REGISTRO

fwrite($fp, $insert, strlen($insert)); <---------------- LO ESCRIBO EN EL ARCHIVO


}


mysql_free_result($req);

//-----------------------> ABRO LA BASE DE DATOS 2

$sqlhostname_eng = "localhost";
$login = "Login_BD_2";
$password = "Pass_BD_2";
$base = "BD_2";

$db_connec = mysql_connect($sqlhostname, $loginx, $password);
$base_selection = mysql_select_db($base,$db_connect);

$query=file_get_contents("sql_clients/clientes.sql"); //<-------------------- LEO EL ARCHVO SQL

$req = mysql_query($query); //<------------------------ EJECUTO EL SQL PARA INSERTAR

if (!$req){
echo "<B>Error ".mysql_errno()." :</B> ".mysql_error()."";
exit;
}
fclose($fp);
unlink("sql_clients/clientes.sql");

-------------------------------------------------------------------------------

El grupo puede ser de 10 o 20 personas, pero solo me deja en el archivo clientes.sql el ultimo. ( 1 SOLO ). Es decir en la BD_2 solamente me insterta el ultimo registro que leyó en el bucle while y he verificado que los lee todos.

¿Alguna ayuda por favor?

Agradezco de antemano

Última edición por jesus999; 17/04/2009 a las 16:19
  #2 (permalink)  
Antiguo 17/04/2009, 16:21
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Ayuda con fwrite()

El fopen() ponlo antes (fuera) del while, porque en cada vuelta estas creando nuevamente el archivo y borrando el contenido anterior.

Edito:

Sorry, acabo de darme cuenta que tienes duplicado fopen(), solo elimina el que esta dentro del while y listo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/04/2009, 16:29
 
Fecha de Ingreso: julio-2006
Mensajes: 6
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Ayuda con fwrite()

Gracias Triby tienes razón, lo probaré a ver...

Saludos
  #4 (permalink)  
Antiguo 21/04/2009, 16:31
 
Fecha de Ingreso: julio-2006
Mensajes: 6
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Ayuda con fwrite()

Funcionó!

Aunque tuve que corregir ciertas cosas al ejecutar el sql. Tuve que leerlo linea a linea e ir ejecutando cada una ya que no tengo permisos para FILE en la base de datos.

Mil gracias por tu ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:55.