Guardar datos de una consulta en otra tabla

Hola necago una necesito ayuda tengo una consulta pero quiero que todo lo que traiga esa consulta se me guarde en otra tabla o copie todo lo que trae esa consulta cabe mecionar que la consulta trae consigo más de 10datos me pueden ayudar

1 respuesta

Respuesta
1
Es fácil de hacer, te dejo un ejemplo:
<?php
$query = mysql_query("select * from tabla");
while($row = mysql_fetch_row($query))
{
    $idx = 0;
    $sql = "INSERT INTO nuevatabla VALUES (";
    foreach ($row as $variable => $value)
    {
        if($variable == 'ID')
            $sql .= "''";
        else
            if($idx == 0)
                $sql .= "'" . $value . "'";
            else
                $sql .= ", '" . $value . "'";
        $idx++;
    }
    $sql .= ");\n";
    mysql_query($sql);
}
?>
Solo tendrías que editar donde dice 'ID' por el index de la tabla ( en caso de que exista ) y copiarías todo lo que exista en la tabla 'tabla' a 'nuevatabla'.
Hola tal no entiendo muy bien, tengo mi código en valid.php dentro de esta me traigo una variable usuario en la cual al ser correcta va a copiar la tabla obracivil a obracivil1, es que no se muy bien me podrías explicar con manzanas plis
<?php
print("
<td><input name=usuario type=hidden id=usuario size=5 onFocus=blur() value=\"".$usuario. "\">");
if ($usuario==globalsave ){
$query = mysql_query("select * from obracivil");
while($row = mysql_fetch_row($query))
{
    $idx = 0;
    $sql = "INSERT INTO obracivill VALUES ("; foreach ($row as $variable => $value)
    {
        if($variable == 'numero')
            $sql .= "''";
        else
            if($idx == 0)
                $sql .= "'" . $value . "'";
            else
                $sql .= ", '" . $value . "'";
        $idx++;
    }
    $sql .= ");\n";
    mysql_query($sql);
} //Solo tendrías que editar donde dice 'ID' por el index de la tabla ( en caso de que exista ) y copiarías todo lo que exista en la tabla 'tabla' a 'nuevatabla'.
}
?>
Claro, en ese caso, debes especificar en la consulta el nombre de usuario
select * from obracivil WHERE NombreUsuario = '" . $usuario . "' LIMIT 1
( Cambia NombreUsuario por el nombre del campo de usuario de la tabla )
De esta forma, sólo pasaran los datos del usuario que se haya especificado, siempre y cuando exista en la base de datos.
También puedes poner un if para comprobar si el usuario no existe y mostrar un mensaje.
El código final quedaría así:
<?php
$query = mysql_query("select * from obracivil WHERE NombreUsuario = '" . $usuario . "' LIMIT 1");
if(mysql_num_rows($query))
{
    $row = mysql_fetch_row($query);
    $idx = 0;
    $sql = "INSERT INTO obracivil1 VALUES (";
    foreach ($row as $variable => $value)
    {
        if($variable == 'numero')
            $sql .= "''";
        else
            if($idx == 0)
                $sql .= "'" . $value . "'";
            else
                $sql .= ", '" . $value . "'";
        $idx++;
    }
    $sql .= ");\n";
    mysql_query($sql);
}else{
    printf("<b>%s</b> no existe en la base de datos", $usuario);
}
?>
Por otra parte, tienes que tener en cuenta que ésto:
            if($variable == 'numero')
                $sql .= "''";
            else

Lo que hace es asignar una nueva ID al nuevo registro, si quieres que tenga la misma ID que en la tabla original, elimina esas 3 líneas.
if ($usuario==globalsave ){
No entiendo muy bien que es lo que está verificando en éste if, doy por hecho que $usuario es el nombre de usuario, ¿no?
Nota: De esta forma, sólo se copia una consulta, no la tabla entera.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas