[ Foro de PHP ]

copiar un registro de una tabla a otra tabla

04-Apr-2013 23:32
Invitado (gabyv)
3 Respuestas

Buenas tardes: Estoy buscando como poder copiar un registro de una tabla a otra tabla y he encontrado lo siguiente:


$sSQL="REPLACE INTO migrarUsuarios SELECT usuarios.* FROM usuarios";



esta sintaxis si funciona pero copia toda la tabla usuarios a la tabla migrarUsuarios.

he probado con:


$numEmpleado = $_POST['numEmpleado']; 
$sSQL="REPLACE INTO migrarUsuarios SELECT usuarios.* FROM usuarios 
WHERE $numEmpleado ";



pero no envia nada. Quiero que al momento de que el usuario seleccione el numEmpleado de la tabla usuarios se vaya ese numEpleado a migrarUsuarios.

De antemano gracias.


04-Apr-2013 23:55
Nacho Cabanes (+83)

Lo tienes casi bien, pero recuerda que una condición debe ser de la forma "campo = valor"

En tu caso, sí el campo "número de empleado" se llama "numero" (por ejemplo), la consulta sería:


INSERT INTO migrarUsuarios SELECT * FROM usuarios WHERE numero=$numEmpleado



(Como tú mismo has visto, puedes usar también REPLACE en vez de INSERT, si quieres que, en caso de existir ya ese dato, lo reemplace con sus valores actualizados, en vez de no hacer nada).


05-Apr-2013 19:27
Invitado (gabyv)

sigue igual, no hace la copia de un registro de una tabla a otra.


05-Apr-2013 23:50
Nacho Cabanes (+83)

Pues sin tener más detalles no puedo decirte mucho más. Lo que tienes que tener en cuenta es:

- En vez de "numero" deberás poner "numEmpleado" o como se llame tu campo correspondiente.

- Las tablas "migrarUsuarios" y "usuarios" han de tener exactamente los mismos campos, en el mismo orden y con los mismos nombre.

- El campo "numero" (o como se llame) debe ser numérico; si no fuera numérico, sino de texto, tendrías que indicar su valor entre comillas.

Para descubrir problemas, asegúrate de que estás tomando los datos correctos: haz que te muestre en pantalla el valor de $_POST['numEmpleado'] y después el resultado de "SELECT * FROM usuarios WHERE numero=$numEmpleado" antes de usar eso para un INSERT (o REPLACE).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)