Programación Web y Scripting > PHP

 Insertar en una base de datos Relacional

(1/2) > >>

Alberto_127:
hola buen dia a todos, tengo una duda sobre insertar datos en un bd relacional, tengo una tabla de usuarios, con los campos, id, user, password, nivel, diaregistro; tengo otra
tabla que se llama datos_de_usuarios con los campos, id, nombre, apellidos, sexo, fecha, id_user, id_user es una FK al campo id de la tabla usuarios; al momento de crear un
usuario lo que hago es primero insertar los datos en la tabla usuario, esto me genera un id dado que es autoincrementable, segundo hago un select a la tabla para tomar el id
y tercero inserto los demas valores en la otra tabla datos_de_usuarios junto con el id del usuario, de esa forma lo he hecho, mi duda es alguien sabe de otra forma de realizar esto,
no se si me explicado, insertar los datos en una tabla, tomar el valor id que es autoincrement para insertarlo en la otra tabla para crear la relacion, de antemano gracias a todos por
sus comentarios.

el_shanky:
Para mi es tan válido lo que haces vos como tmb lo sería insertar el id del datos_de_usuario dentro de la tabla usuario!

No entiendo cual es tu incógnita? :S

Salu2

homie:
Ok, si alcancé a entender lo que quieres hacer es insertar datos a 2 tablas diferentes desde un mismo formulario, si eso es correcto, lo que tendrías que hacer sería lo siguiente:


--- Código: PHP ---<?php//Recuperas los valores de tu formulario que insertarás en la tabla usuarios$user = $_POST['user'];$password = $_POST['password'];$nivel = $_POST['nivel'];$diaregistro = $_POST['diaregistro']; //Insertas los valores a la tabla usuariosmysql_query("INSERT INTO usuarios (user, password, nivel, diaregistro) VALUES ('$user', '$password', '$nivel', '$diaregistro')",$conexion); //Recuperas los valores de tu formulario que insertarás en la tabla datos_de_usuarios$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];$sexo = $_POST['sexo'];$fecha = $_POST['fecha'];$id_user = mysql_insert_id(); //<---Aquí es donde tomas el valor id que es autoincrement para insertarlo en la otra tabla  //Insertas los valores a la tabla datos_de_usuariosmysql_query("INSERT INTO usuarios (nombre, apellidos, sexo, fecha, id_user) VALUES ('$nombre', '$apellidos', '$sexo', '$fecha', '$id_user')", $conexion);?> 
Espero que esto te pueda ayudar. Saludos  :good:

F_Tanori:
En experiencias propias mysql_insert_id() falla, en ocaciones no devuelve el valor correcto.

La opcion que he 'adoptado' es generar una cadena unica por ejempo con UniqID despues hacer una consulta con esa cadena unica y obtener el Id autonumerico, parece que esto es menos productivo que usar la funcion  mysql_insert_id(), ya que seria otra consulta, una insercion etc., incluso hay muchas forma de hacerlo pero es bastante efectiva y certera :P

Esto es en base a problemas que hemos experimentado usando esa funcion, y por lo cual utilizamos esta forma comentada



Saludos

objetivophp:
Si lo que quieres es obtener el id insertado recientemente para una conexion se debe usar  LAST_INSERT_ID();
Es decir si haces un ingreso en una tabla con campo autoincremental y quieres usar el id que se genero en esa tabla la siguiente consulta es SELECT LAST_INSERT_ID(); puesto que esta es nativa de MySQL y trae el ultimo id para la conexion y no el ultimo id de la tabla por lo menos es lo que entiendo del manual de MySQL que difiere de mysql_insert_id de php que nos trae el ultimo id de cualquier conexion..

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa