Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] while y insert into

Estas en el tema de while y insert into en el foro de PHP en Foros del Web. Hola, Tengo el siguiente codigo: Código: while ($row = mysql_fetch_array($result)) { $db->query("INSERT INTO tw_rt_cron (id_user) VALUES ('".$iduser."')") or die(mysql_error()); } Imaginemos que el while se ...
  #1 (permalink)  
Antiguo 29/12/2014, 14:43
Avatar de joska1993  
Fecha de Ingreso: septiembre-2009
Mensajes: 76
Antigüedad: 10 años, 5 meses
Puntos: 0
while y insert into

Hola,

Tengo el siguiente codigo:

Código:
while ($row = mysql_fetch_array($result)) {

	    $db->query("INSERT INTO tw_rt_cron (id_user) VALUES ('".$iduser."')") or die(mysql_error());

}
Imaginemos que el while se repite 3 veces...
En la base de datos me guarda el mismo valor 3 veces, siendo el valor distinto.

Ejemplo:
iduser se repite con valores: 1, 2, 3, 4, 5
Pues la sentencia insert into guarda en la base de datos un valor 5 veces.

¿Que puede estar pasando?

Gracias,
  #2 (permalink)  
Antiguo 29/12/2014, 14:57
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.433
Antigüedad: 8 años, 3 meses
Puntos: 934
Respuesta: while y insert into

Para que siempre se guarda el mismo dato porque la variable sigue siendo la misma. Si los datos los obtienes de una tabla, entonces esa variable $row debe de ser un array asociativo y deberá de contener a dichos valores, entonces, lo que te queda es tomar cada valor de dicho array e ir insertándolo.

Código PHP:
Ver original
  1. while ($row = mysql_fetch_array($result)) {
  2.     $db->query("INSERT INTO tw_rt_cron (id_user) VALUES ('".$row['nombre_del_campo']."')") or die(mysql_error());
  3. }

Aunque, particularmente, no le veo sentido a esto, ya que si los datos está en una tabla, ¿para qué los tomas para insertarlos en otra? Si deseas guardar los mismos datos en varias tablas, puedes hacer todo el proceso una sola vez y no desperdiciando recursos del sistema con cada inserción.

Saludos
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #3 (permalink)  
Antiguo 29/12/2014, 16:45
Avatar de joska1993  
Fecha de Ingreso: septiembre-2009
Mensajes: 76
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: while y insert into

Cita:
Iniciado por Alexis88 Ver Mensaje
Para que siempre se guarda el mismo dato porque la variable sigue siendo la misma. Si los datos los obtienes de una tabla, entonces esa variable $row debe de ser un array asociativo y deberá de contener a dichos valores, entonces, lo que te queda es tomar cada valor de dicho array e ir insertándolo.

Código PHP:
Ver original
  1. while ($row = mysql_fetch_array($result)) {
  2.     $db->query("INSERT INTO tw_rt_cron (id_user) VALUES ('".$row['nombre_del_campo']."')") or die(mysql_error());
  3. }

Aunque, particularmente, no le veo sentido a esto, ya que si los datos está en una tabla, ¿para qué los tomas para insertarlos en otra? Si deseas guardar los mismos datos en varias tablas, puedes hacer todo el proceso una sola vez y no desperdiciando recursos del sistema con cada inserción.

Saludos

En realidad no es así, es algo así...

Código PHP:

if (!empty($_POST['id'])){
    // Extraer por post la variable.
    $tweet_id = $_POST['id'];
    // Extraer datos de usuarios
    $link = mysql_connect("localhost", "udads32423o", "4334234");
    mysql_select_db("udads32423o", $link);
    mysql_query("SET NAMES 'utf8'"); //Para que se muestren las tildes
    $result = mysql_query("SELECT * FROM tw_authed_users", $link);
    
    while ($row = mysql_fetch_array($result)) {
        $iduser = $row["id"];
        // Los datos que extraemos
        $a = $row["oauth_token"];
        $b = $row["oauth_token_secret"];
        // Estos son propios de la app de twitter
        $c = "4jk23h432lkj423hkj";
        $d = "hjg43k5h4g35hj435gj3";
        $doRT = doRT($tweet_id, $a, $b, $c, $d);
        // Almacenar en la base de datos el id del RT
        $json = json_decode($doRT);
        $idusuariodelrt = $json->user->id_str;
        $idRTtweet = $json->id_str;
        $fecha = $json->created_at;
        $format = substr($fecha, -19, 8); // poner el formato correcto a la fecha del tweet

        // Guardar en la base de datos el id del rt, la fecha y quien ha hecho el rt
        $db->query("INSERT INTO tw_rt_cron (id_user, id_rt, fecha) VALUES ('".$idusuariodelrt."','".$idRTtweet."','".$format."')") or die(mysql_error());
        //echo $idusuariodelrt;


        //echo '- ID Retweet:'.$idRTtweet.' - Fecha:'.$format.'<br>';
    }
    
    $insert = "INSERT INTO tw_rt_cron (id_user, id_rt, fecha) VALUES ";
    $db->query($insert)
    
    
    mysql_free_result($result);
    mysql_close($link);
    
    echo 'Miraver que te he hecho to los RT! makina pijo! LOLAZO!!';
}else{
    ?>
    <form name="formulario" method="post" action="rt.php">
        Tweet ID: <input type="text" name="id" value="">
        <input type="submit" />
    </form>
    <?php
}
El problema es que las variables $idusuariodelrt y $idRTtweet me las inserta en la base de datos con el mismo valor todas las veces que se repite el while...

¿Porque puede ser?

un saludo!

Última edición por joska1993; 29/12/2014 a las 16:54
  #4 (permalink)  
Antiguo 29/12/2014, 18:51
Avatar de joska1993  
Fecha de Ingreso: septiembre-2009
Mensajes: 76
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: while y insert into

Solucionado: Era el límite del campo de mysql

un saludo amigos" ;)

Etiquetas: insert, mysql, sql
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 13:16.