Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2009, 16:06
jesus999
 
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