Autor
|
Tema: [PHP y MySQL] Problema con código (Leído 1,694 veces)
|
electrodev
Desconectado
Mensajes: 58
No,¡Las Maquinas no son Perfectas!
|
Buenos días, os escribo por que no dejo de tirarme de los pelos con este problema, supongo que será algún fallo tonto o simplemente que no lo hago de forma correcta. echo "Copiando..."; $gid = '10'; $sql = 'SELECT * FROM my_table_1 WHERE id = "'.$gid.'"'; $sql = 'INSERT INTO my_table_2 (id,data1,data2) VALUES ("'.$res['id'].'","'.$res['data1'].'","'.$res['data2'].'")';
La estructura de las dos tablas son totalmente iguales y como verán lo único que hace es copiar la fila que retorna la 1º consulta SQL en la 2º Tabla. La primera linea donde esta el echo funciona y php no me tira ningún error, pero al explorar con phpmyadmin la 2º tabla no se introducen los datos. Desconozco totalmente que esta mal o que estoy haciendo mal, ¿Alguien sabe a que se debe?, ¿Alguna otra manera de hacerlo?  Un Saludo y Gracias de antemano
|
|
« Última modificación: 16 Agosto 2014, 22:48 pm por electrodev »
|
En línea
|
|
|
|
::: Devil :::
Desconectado
Mensajes: 449
¡Lucha por lo que quieres y lo Obtendras!
|
update
|
|
|
En línea
|
NI TU NI NADIEN PORDRAN CONMIGO SOY MAS FUERTE QUE LA ENVIDIA.
ESTO ESTA DEDICADO A LOS QUE ME JODEN LA VIDA
|
|
|
electrodev
Desconectado
Mensajes: 58
No,¡Las Maquinas no son Perfectas!
|
??
|
|
|
En línea
|
|
|
|
MinusFour
|
¿Como es tu tabla de SQL? DESCRIBE my_table_1;
El comando lo corres desde tu base de datos en el phpmyadmin en la pestaña SQL o desde una conexion SQL habiendo selecionado la base de datos. También puedes debuggear SQL con mysql_error(). Ej.
|
|
|
En línea
|
|
|
|
electrodev
Desconectado
Mensajes: 58
No,¡Las Maquinas no son Perfectas!
|
Gracias MinusFour, en cuanto tenga un momento lo pruebo a ver si saco mas datos de que falla.
Un Saludo y Gracias
|
|
|
En línea
|
|
|
|
spysecurityca
Desconectado
Mensajes: 58
|
Mi viejo es como dijeron arriba, intenta con un update, ya que son iguales le pasas el elemento en común a la otra tabla para que te haga un cambio.
Haces que el update sql se hasta efectivo al encontrar el elemento el común con la otra tabla por medio de un if.
No te hago el código porque estoy desde el móvil y es un poco fastidioso.
|
|
|
En línea
|
|
|
|
electrodev
Desconectado
Mensajes: 58
No,¡Las Maquinas no son Perfectas!
|
Ok muchiiiisimas gracias a todos, ya lo arregle.  Si quereis ya podeis cerrar el hilo.
|
|
|
En línea
|
|
|
|
dRak0
|
echo "Copiando..."; Cuando no vayas a mostrar una variable usa comillas simples ''. Si usas comillas dobles PHP tambien analiza si existe una variable, afectando al rendimiento.
|
|
|
En línea
|
|
|
|
electrodev
Desconectado
Mensajes: 58
No,¡Las Maquinas no son Perfectas!
|
»®et2lib©« Gracias por ese apunte, me lo guardo. Muchas Gracias 
|
|
|
En línea
|
|
|
|
WHK
|
Prueba con: <?php ... INSERT INTO tabla1 SELECT NULL, -- Los ids no deberian compartirse a menos que sea muy necesario campo1, campo2 FROM tabla1 ');
Desde la misma query puedes insertar haciendo un select por debajo, esto vuelca directamente los datos de una tabla a otra seleccinando los campos que necesitas, de hecho desde el select puedes hacer un order by o un limit como gustes o joins, generalmente lo uso cuando debo llenar tablas para los cache. Si haces esto desde php no sabrás si tienes 1 dato o un millón y pasar un millón de registros a la memoria vía php podría ser fatal, en ves de eso deja que mysql se encargue de traspasar fila por fila sin dejar sin aliento a tu servidor. Si quieres pasar un solo dato puedes usar un where y si quieres unir datos relacionados puedes usar group_concat: INSERT IGNORE INTO usuarios_b SELECT id, nombre, correo, GROUP_CONCAT(telefonos SEPARATOR ", ") as telefonos LEFT JOIN telefonos ON (telefonos.usuario_id = usuarios_a.id) FROM usuarios_a WHERE usuarios_a.id = 157894 GROUP BY usuarios_a.id ');
Digamos que usuarios_a tiene una tabla relacional con todos los telefonos del usuario, en la tabla usuarios_b tendrá los telefonos separados por coma en un solo campo desnormalizado vs usuarios_a que si estaba normalizado. El ignore es para que no arroje error si ya existía, si se quiere renovar se puede unir con un drop o un update en ves de insert. Puse left join en ves de inner join porque talves el usuario no tiene telefonos, en ese caso el campo queda nulo y la tabla usuarios_b debería tener el campo telefonos nullable y usuarios_b denbería llevar un foregin key relaiconado con el id de la tabla de usuarios_a con un on-update y on-delete en cascade para hacer joins mas rápidos con innodb. Por favor intenten dejar de usar mysql_ y usen mysqli_ o el objeto mismo de mysqli ya que mysql_ se declaró obsoleto en las nuevas verisones de php5.
|
|
« Última modificación: 22 Agosto 2014, 18:26 pm por WHK »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
codigo de conexion vwd y mysql?
.NET (C#, VB.NET, ASP)
|
coolfrog
|
7
|
5,961
|
2 Junio 2006, 08:34 am
por BADBYTE-K
|
|
|
Problema al leer DB mysql en php, algo del codigo esta mal.
« 1 2 3 »
PHP
|
XXXXXX
|
27
|
6,388
|
27 Mayo 2010, 19:22 pm
por XXXXXX
|
|
|
[ANSI C]Codigo fuente del generador de mysql inyection.
Programación C/C++
|
volteo0101
|
0
|
2,897
|
28 Febrero 2011, 15:12 pm
por volteo0101
|
|
|
Ayuda con código PHP+MySQL sencillo
PHP
|
mokoMonster
|
2
|
1,660
|
19 Marzo 2012, 21:27 pm
por mokoMonster
|
|
|
Duda php, mysql, código aleatorio
Desarrollo Web
|
HORECA
|
3
|
1,476
|
3 Diciembre 2013, 17:21 pm
por EFEX
|
|