Código para conseguir el último ID de inserción de una tupla
-
Upload
cristhian-castellon -
Category
Documents
-
view
677 -
download
2
Transcript of Código para conseguir el último ID de inserción de una tupla
![Page 1: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/1.jpg)
Código para conseguir el último ID de inserción de una tupla.Por Miguel Angel AlvarezAtención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Creamos este artículo para responder una duda que nos han preguntado alguna vez en nuestro correo. Se trata sobre conseguir el último identificador de un registro insertado en la base de datos, programando con PHP y con la base de datos MySQL.
Realmente es una duda muy sencilla de solucionar, gracias al rico juego de funciones de PHP para trabajar con bases de datos MySQL. Existe una función que nos devuelve directamente el identificador de la última inserción, utilizando la conexión a la base de datos que se le pase por parámetro, o la última conexión utilizada en caso de que no se le indique parámetro.
mysql_insert_id($connectid)
Ejemplo de utilización
Veamos un ejemplo de la utilización de esta función, en el que se realizan las acciones necesarias para insertar un elemento en la base de datos. En este ejemplo utilizaremos una base de datos llamada "test" y la tabla "cliente".
//conecto con la base de datos $connectid = mysql_connect("localhost","root","");
//selecciono la base de datos a utilizar mysql_select_db("test",$connectid);
//Sentencia de inserción del elemento $ssql = "INSERT INTO cliente (nombre_cliente, cif, direccion, email) VALUES ('xxx Nombre empresa', 'B3331113', 'C/ Corona 2', '[email protected]')";
//lo inserto en la base de datos if (mysql_query($ssql,$connectid)){
//recibo el último id $ultimo_id = mysql_insert_id($connectid); echo $ultimo_id; }else{ echo "La inserción no se realizó"; }
Primero se conecta con MySQL y se selecciona la base de datos a utilizar. Luego se genera una sentencia SQL de inserción en una supuesta tabla de
![Page 2: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/2.jpg)
clientes. Si la ejecución de esta sentencia es correcta se recibe el último ID con la función insert_id(). Si la ejecución de la sentencia falla, muestra un mensaje de error.
Fijémonos que insert_id() recibe el identificador de la conexión, devuelto por mysql_connect() y no el identificador de resultado de la consulta, que devuelve mysql_query() cuando se ejecutan sentencias de selección en la base de datos.
![Page 3: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/3.jpg)
Obtener id antes de insertar en mysql
Como puedo obtener el id que va a tener un articulo antes de que lo inserte en la base de datos.. la id es auto_increment.
Yo he pensado en obtener el valor mayor de la id y sumar 1 pero no se si existe alguna solucion mejor para este caso..
Espero vuestras sugerencias
Gracias. Avisos Google
Advanced NMS DesignNMS Design & Integration Cable, Telco & Wireless Ecosystems www.integ.com/IS3"Master Recursos Humanos"Doble Titulación Europea Becas hasta el 75%. Ultimas Plazas! www.eude.esEmbedded Tools & ConsultRTOS,Compiler,Debugger,JTAG Debugger,Flasher,Starter Kits www.innis-intl.com__________________Ado_k2 :adios:
#2 (permalink) 01/01/2011, 08:40
richicasas Fecha de Ingreso: abril-2007Ubicación: ColombiaMensajes: 650
Respuesta: Obtener id antes de insertar en mysql
$idconexion = mysql_connect("localhost","root",""); $ultimoid = mysql_insert_id($idconexion); __________________Paginas web El karma es como el agua, no se le niega a nadie!!
#3 (permalink) 01/01/2011, 09:07
fernandozunni Fecha de Ingreso: febrero-2009
![Page 4: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/4.jpg)
Mensajes: 195
Respuesta: Obtener id antes de insertar en mysql
No creo que haya una solución mejor, no conozco ninguna funcion (ni creo que la haya) que te regrese un id todavía no generado en la tabla.
mysql_insert_id() // te devuelve el id del ultimo insert hecho, no el que vas a insertar.
saludos y feliz año.
#4 (permalink) 01/01/2011, 10:08
mariomon17 Fecha de Ingreso: noviembre-2009Mensajes: 574
Respuesta: Obtener id antes de insertar en mysql
¿Para que lo quieres saber? __________________Lost: "Tienes que dejarlo ir" :)
#5 (permalink) 01/01/2011, 16:56
Ado_k2 Fecha de Ingreso: junio-2003Mensajes: 104
Respuesta: Obtener id antes de insertar en mysql
Cita: Iniciado por fernandozunni No creo que haya una solución mejor, no conozco ninguna funcion (ni creo que la haya) que te regrese un id todavía no generado en la tabla.
mysql_insert_id() // te devuelve el id del ultimo insert hecho, no el que vas a insertar.
saludos y feliz año.Es justamente lo que necesito mas rapido... y ademas si le sumo +1 sera el siguiente creo
yo, gracias compañeros la verdad que aquí uno siempre sale aprendiendo algo mas. __________________Ado_k2 :adios:
![Page 5: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/5.jpg)
ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Avisos GoogleDiplomados a DistanciaEstudie desde casa u oficina (24 h) Ahorre hasta 50% del valor. 4 meses www.minternationalcenter.comSQL Database DesignerDesign, visualize, document and reverse engineer any database. www.modelright.com/Web based OLAP Clientfor Microsoft Analysis Services download Free Evaluation www.ReportPortal.com
Herramientas Desplegado
#1 (permalink) 23/02/2007, 10:49
dess01 Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
HOla a todos los foreros.!
Tengo un problema, que espero me puedan orientar.Les explico:
Tengo 3 tablas en mi base de datos(stoy utilizando el phpmyadmin). En mi código de php Hago un formulario que me permite guardar los datos que se capturen, hasta ahí va todo bien, peeeero, mi problema es que necesito que se guarde el id de la primera tabla a las otras dos tablas para relacionar a cual le corresponde a cual.
Por ejemplo:TABLA | C A M P O S tabla 1: id_esp, especialidadtabla 2: id_preg, preg, id_esptabla 3: id_resp, resp1, resp2, resp3, id_preg, id_esp
Los datos hasta ahorita los puedo guardar en "especialidad", "preg", "resp1", "resp2", "resp3". Los primeros id de cada tabla es autoincrementable, precisamente ese id, necesito que se guarde en el "id_esp" de la tabla 2 y 3 y el "id_preg" en la tabla 3.
Como sería la sentencia o el código para extraer ese valor autoincrementable de la
"id_esp" y guardarlo en los campos respectivos??? O estará mal mi lógica??
![Page 6: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/6.jpg)
Pues lo ke he encontrado es haciendo un select pero tomando el nombre del id_esp= "?" , pero supuestamente ese dato es variable, va a estar cambiando conforme agregue mas especialidades, no siempre va a hacer el mismo valor.
Muchas gracias, espero su pronta ayuda.
Saludos a todos! Avisos Google
Curso Online de JavaAprende a programar Java y a desarrollar aplicaciones. Infórmate www.seas.es"Master Recursos Humanos"Doble Titulación Europea Becas hasta el 75%. Ultimas Plazas! www.eude.esLicenciatura a DistanciaEstudia sin asistir a clase, Licenciatura 100% a Distancia. www.aiu.edu
#2 (permalink) 23/02/2007, 10:58
gerson Fecha de Ingreso: febrero-2005Ubicación: LimaMensajes: 474
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Dale un vistazo a esto:http://www.php.net/manual/es/functio...-insert-id.php
salud2 __________________
#3 (permalink) 23/02/2007, 10:59
sofiacharni Fecha de Ingreso: julio-2005Mensajes: 21
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
El id tipo autoincrement se obtiene asi:
mysql_query("insert into especialidad....", $conexion)
Obtén el id generado con:
$id_esp = mysql_insert_id()
![Page 7: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/7.jpg)
#4 (permalink) 23/02/2007, 11:03
Carxl Colaborador
Fecha de Ingreso: agosto-2006Ubicación: BogotáMensajes: 2.979
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Hola dess01.
Si lo que necesitas es el último valor autoincrementable de una tabla, lo obtienes como te dijeron arriba mysql_insert_id.
Sino es eso, es que está mal tu lógica.
Saludos. __________________Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)www.programandoweb.com
#5 (permalink) 23/02/2007, 17:31
dess01
Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Muxas muxas gracias, muchachos!
Ya lo he hecho y sí jala, pero no se qué estaré haciendo mal que el id me lo guarda en todos los registros del campo de la tabla 3.
Ejemplo:Cree 2 preguntas( en tabla2), y cada pregunta con sus 3 respuestas(tabla 3). Cuando cree la 1a pregunta (id_preg: 1) efecivamente si me guardó el id_preg en no_preg; hasta ahi vamos bien, Peeeo, cuando cree la 2a pregunta y las 3 respuestas noté que en tabla 3 a la respuesta anterior tambien guardó el mismo id.
TABLA 2id_preg | preg:1 | ¿***?
![Page 8: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/8.jpg)
2 | ¿***?
TABLA 3id_resp: | resp1: | resp2: | resp3: | no_preg1 | resp1.1 | resp2.1 | resp3.1 | 22 | resp1.2 | resp2.2 | resp3.2 | 2
Segun yo así hice mi código:Código PHP: $connection = mysql_connect ("localhost") or die ("No se puede conectar al servidor"); mysql_select_db ("base22feb") or die ("No se puede seleccionar BD");
// insertamos pregunta en la base de datos obtenida del formulario mysql_query("INSERT INTO cat_preg (preg) VALUES ('{$_POST['preg']}')",$connection); //aqui obtengo la id reciente $id_preg = mysql_insert_id(); // insertamos respuestas en la base de datos obtenida del formulario
mysql_query("INSERT INTO cat_resp (resp1, resp2, resp3) VALUES ('{$_POST['resp1']}','{$_POST['resp2']}','{$_POST['resp3']}')",$connection); //aquí se me hace que esta mi fallo, please help! $instruccion = "update cat_resp set no_preg=$id_preg"; $actualizacion = mysql_query ($instruccion, $connection) or die ("Fallo en el agregado de la id_preg");
En este último parrafo se me hace ke esta mi error, pues no stoy segura si deba ir el update u otra sentencia o función.De verdad muxas gracias, espero su apoyo para que me orienten por favor. Saluditos!!
#6 (permalink) 25/02/2007, 21:40
dess01
Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Oigan muxax@s, kreo ya se olvidaron de mi
![Page 9: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/9.jpg)
hay alguien ke me pueda ayudar? porfis!
#7 (permalink) 26/02/2007, 18:15
dess01 Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Holaa? ENtonces no hay nadie ke me pueda echar la mano? '(
#8 (permalink) 27/02/2007, 01:27
El Patrón. Fecha de Ingreso: abril-2006Ubicación: ColombiaMensajes: 648
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Hola
Bueno, pues tu codigo esta bien, pero lo que te ocurre es lo siguiente
update cat_resp set no_preg=$id_preg
Cuando tu realizas esa instruccion lo que estas haciendo es actualizando TODOS los registros de la tabla cat_resp asignando a todos los no_preg el mismo valor.
Solución: (lo que esta en verde)
mysql_query("INSERT INTO cat_preg (preg) VALUES ('{$_POST['preg']}')",$connection);
//aqui obtengo la id reciente $id_preg = mysql_insert_id();
// insertamos respuestas en la base de datos obtenida del formulario mysql_query("INSERT INTO cat_resp (resp1, resp2, resp3) VALUES ('{$_POST['resp1']}','{$_POST['resp2']}','{$_POST['resp3']}')",$connection); //traes el ultimo valor insertado en cat_resp para actualizar SOLO ese registro$id_resp = mysql_insert_id();//aquí se me hace que esta mi fallo, please help! $instruccion = "update cat_resp set no_preg=$id_preg WHERE id_resp = $id_resp";
![Page 10: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/10.jpg)
asi, el solo actualizara el ultimo registro insertado en cat_resp
bueno, espero te sirva
suerte
#9 (permalink) 27/02/2007, 19:08
dess01
Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Hola hola "Patrón", muxas gracias!!
Efectivamente ahi staba mi tonto error. Lo hice tal cual komo me dijiste y ya guarda el
"id_preg" respectivamente a la tabla de mis respuestas
Estuve leyendo algunos foros de este web y vi uno parecido a lo que yo necesitaba (sorry, no me dejaron meter vinculo)y hubo una respuesta que no entendí:
"Despues de insertar el registro en la tabla 1 puedes extraer el ultimo ID con la siguiente sentencia:
Código PHP:<?php$sql_1 = "SELECT MAX(id) FROM tabla1;"; realizas la consulta y extraes el valor obtenido y lo guardas en la otra tabla y listo ;)"
Ya que precisamente necesito hacer eso, pues ahora me falta insertar el "id_esp" para meterlo a la tabla 2 (cat_preg)y a la tabla 3 (cat_resp) para asociarlas. pero no me sale
Agregué ese parte en mi codigo así:
Código PHP:$connection = mysql_connect ("localhost") or die ("No se puede conectar al servidor"); mysql_select_db ("base22feb") or die ("No se puede seleccionar BD");
![Page 11: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/11.jpg)
//trayendo ultimo id de la tabla especialidad $id_esp= "SELECT MAX(id_esp) FROM especialidad"; // insertaremos los datos de la preg a la base de datos mysql_query("INSERT INTO cat_preg (preg) VALUES ('{$_POST['preg']}')",$connection); $id_preg = mysql_insert_id(); //metiendo el ultimo id_esp insertado al cat_preg. se me hace que otra vez la estoy regando en esta parte. :'( $instruccion = "update cat_preg set tipo_esp=$id_esp where id_preg= $id_preg"; $actualizacion = mysql_query ($instruccion, $connection) or die ("Fallo en el agregado de la id_esp");
....
Les tengo ke komentar ke en este codigo de php no tengo que hacer la consulta así:Código PHP:mysql_query("INSERT INTO cat_especialidad (especialidad) VALUES ('{$_POST['especialidad']}')",$connection);
ya que en este archivo php no está el fomulario ke me permitirá guardar los datos de la especialidad, eso lo hice en otro archivo php que tiene el enlace que me lleva a éste en donde esta el formulario de preguntas y respuestas.. Así que esta consulta de la
especialidad está en el formulario1.php . No sé si me explico bien..
ejemplo:
**formulario1.php** Nombre especialidad:______<boton guardar>Hacer encuesta <-- link
(al clickear en "guardar" y despues en "hacer encuesta" me lleva al formulario2.php)
**formulario2.php**Escribe pregunta: ______Escribe tu REsp1:____Escribe tu Resp2:____Escribe tu REsp3:____
<boton guardar>
Cuando cheko mi base de datos me doy cuenta que no guarda la "id_esp" de la tabla1 a la tabla2(tipo_esp) donde estan mis preguntas.
![Page 12: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/12.jpg)
No sé si tenga ke ver que utilizo dos archivos para eso o definitivamente me falta alguna otra consulta que hacer para meter esa id.
Espero me puedan auxiliar prontito Porfis! GrAcIaS!
#10 (permalink) 28/02/2007, 07:35
El Patrón.
Fecha de Ingreso: abril-2006Ubicación: ColombiaMensajes: 648
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Hola
Bueno, pues claro que lo puedes mejorar pues en el link podrias enviar el idespecialidad, es decir que el select max lo harias luego de insertar el dato de la especialidad para que el link lleve ese valor
Pero pues sirve igual que como lo planteas, de obtener el id maximo de especialidad en la pagina donde guardas la pregunta y las respuestas
lo que pasa en ese caso es que tienes que hacer 2 consultas separadas, es decir, una consulta para el id y otra para el update, tu ya tienes la segunda, lo que te faltaria es esto
Código PHP:<?$query_id_esp = mysql_query("Select max(id_esp) from especialidad");$r_id_esp = mysql_fetch_array($query_id_esp);//puse el echo para que veas el id, pero pues lo puedes quitar sin //problema
echo $id_esp = $r_id_esp[0];
Y ahora si la variable $id_esp tiene el valor numerico del id, porque tu tenias solo la consulta, y le asignabas a $id_esp una cadena que contenia la consulta y pues es por eso que no te estaba guardando el valor.
Espero te funcione bien, y si no por aqui andare, suerte.
#11 (permalink) 28/02/2007, 10:39
![Page 13: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/13.jpg)
dess01
Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Gracias "Patrón", pero lo siento mas cómodo extrayendo el id_esp en el formulario2.php,
pero, ke krees! me salió un error ..
Me aparece un warning en la linea donde está este codigo: Código PHP:$r_id_esp = mysql_fetch_array($query_id_esp);
Supuestamente mi código queda finalmente así, cierto?
Código PHP:$connection = mysql_connect ("localhost") or die ("No se puede conectar al servidor"); mysql_select_db ("base22feb") or die ("No se puede seleccionar BD");
//trayendo ultimo id de la tabla especialidad $query_id_esp = mysql_query ("Select max(id_esp) from especialidad"); $r_id_esp = mysql_fetch_array($query_id_esp); $id_esp = $r_id_esp[0]; // Con esta sentencia SQL insertaremos los datos en la base de datos mysql_query("INSERT INTO cat_preg (preg) VALUES ('{$_POST['preg']}')",$connection); $id_preg = mysql_insert_id(); //metiendo el último id_esp a la tabla cat_preg $instruccion = "update cat_preg set tipo_esp=$id_esp where id_preg= $id_preg"; $actualizacion = mysql_query ($instruccion, $connection) or die ("Fallo en el agregado de la id_esp");
Estuve leyendo en otro lado y vi algo así:Código PHP:$consulta = "SELECT MAX(ID) FROM notas"; $res = myql_query($consulta,$id); $ultima_nota = mysql_result(MAX(ID)");
o nada ke ver? Qué estaré haciedno mal?. ke alguien me expliquee
![Page 14: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/14.jpg)
#12 (permalink) 28/02/2007, 11:37
deet
Fecha de Ingreso: mayo-2005Ubicación: Córdoba - ArgentinaMensajes: 267
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
sería mucho mas fácil ayudarte si pusieras el warning que te aparece en pantalla. __________________www.se-group.net
www.divisiongt.com.ar
#13 (permalink) 28/02/2007, 11:54
dess01
Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
ok, sorry, asi dice:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\htdocs\27feb06\dos6-28feb07.php on line 32
la linea 32 es esta:
Código PHP:$r_id_esp = mysql_fetch_array($query_id_esp);
de que se trata ese warning?
#14 (permalink) 28/02/2007, 12:30
deet
Fecha de Ingreso: mayo-2005Ubicación: Córdoba - ArgentinaMensajes: 267
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
![Page 15: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/15.jpg)
ahi dice que la sentencia sql no es válida,
es extraño ya que es una consulta muy simple, tal vez sea una versión de mysql que no soporta max(), la verdad que desconozco a que se debe, nunca me ha sucedido algo igual, lo que se me ocurre es hacerlo de otra manera:
Código PHP:
//trayendo ultimo id de la tabla especialidad $query_id_esp = mysql_query ("Select id_esp from especialidad ORDER BY id_esp DESC LIMIT 0,1"); $r_id_esp = mysql_fetch_array($query_id_esp);
esto no es lo óptimo pero creo que saca de apuros.
espero que te sirva. __________________www.se-group.net
www.divisiongt.com.ar
#15 (permalink) 28/02/2007, 17:31
dess01 Fecha de Ingreso: febrero-2007Ubicación: MéxicoMensajes: 44
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL
Eureka!
Me funciona ya de maravilla!, el error ke les expuse anterioremente fue por error de dedo
Por la emoción no me había percatado que había anotado mal el nombre de la tabla especialidad, oops, sorry!!
Muxas gracias muxax@s!! Los quiero Saluditos!.
Seguiré paseandome por el foro.
![Page 16: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/16.jpg)
mysql_insert_id(PHP 4, PHP 5)
mysql_insert_id — Obtiene la ID generada en la última consulta
Report a bug
Descripción
int mysql_insert_id ([ resource $link_identifier ] )
Recupera el ID generado por una columna AUTO_INCREMENT por la consulta previa (normalmente INSERT).
Report a bug
Parámetros
link_identifier
La conexión MySQL. Si el identificador de enlace no se especifica, el último enlace abierto por mysql_connect() es asumido. Si no se encuentra dicho enlace, la función intentará establecer un nuevo enlace como si mysql_connect() fuese invocado sin parámetros. Si no se encuentra o establece una conexión, un error de nivel E_WARNING es generado.
Report a bug
Valores devueltos
La ID generada por una columna AUTO_INCREMENT por la consulta previa en caso de éxito, 0 si la anterior consulta previa no genera un valor AUTO_INCREMENT, o FALSE si no se estableció una conexión MySQL.
Report a bug
![Page 17: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/17.jpg)
Ejemplos
Example #1 Ejemplo de mysql_insert_id()
<?php$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');if (!$link) { die('Could not connect: ' . mysql_error());}mysql_select_db('mydb');
mysql_query("INSERT INTO mytable (product) values ('kossu')");printf("Last inserted record has id %d\n", mysql_insert_id());?>
Report a bug
Notas
Caution
mysql_insert_id() convertirá el tipo de retorno de la función nativa de MySQL en el API de C mysql_insert_id() a un tipo long (llamado int en PHP). Si su columna AUTO_INCREMENT tiene un tipo BIGINT (64 bits) la conversión puede resultar en un valor incorrecto. En su lugar, use la función interna de SQL en MySQL LAST_INSERT_ID() en una consulta SQL. Para más información sobre los valores máximos de integers, por favor vea la documentación de integer.
Note:
Because mysql_insert_id() acts on the last performed query, be sure to call mysql_insert_id() immediately after the query that generates the value. Como mysql_insert_id() en la última consulta que ha funcionado, asegúrese de llamar a mysql_insert_id() inmediatamente despues de la consulta que genera el valor.
Note:
El valor de la función SQL en MySQL LAST_INSERT_ID() siempre contiene el valor más recientientemente generado por AUTO_INCREMENT, y no es reseteado entre consultas.
![Page 18: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/18.jpg)
obtener valor de otra tabla segun ID
Avisos GoogleChatea con tus AmigosBusca y Conecta con tus Amigos en Facebook®. Regístrate Ahora! www.Facebook.com"Master Recursos Humanos"Doble Titulación Europea Becas hasta el 75%. Ultimas Plazas! www.eude.esLicenciatura a DistanciaEstudia sin asistir a clase, Licenciatura 100% a Distancia. www.aiu.edu
Herramientas Desplegado
#1 (permalink)
22/02/2011, 02:40
crissrocca
Fecha de Ingreso: febrero-2011
Mensajes: 34
obtener valor de otra tabla segun ID
actualmente tengo creado esto, un paginador que lee de una tabla y muestra sus valores.
$resultados = mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1");$total_registros = mysql_num_rows($resultados); $resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros"); $total_paginas = ceil($total_registros / $registros);
![Page 19: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/19.jpg)
if($total_registros) {
while($articulo=mysql_fetch_array($resultados)) {echo "<b>".$articulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/".$articulo["formato"]."</b><br>";echo "<b>".$articulo["precio"]."</b><br>";echo "<b>".$articulo["picture1"]."</b>";echo "<b>".$articulo["picture2"]."</b><br>";echo "<font color='#666666'>".$articulo["location"]."</font><br><br><br>";}
} else {echo "<font color='darkgray'>(sin resultados)</font>";}
esto funciona correctamente y muestra todos los valores con el ID de la tabla correspondiente phpbazar_ads.
lo que necesito hacer es que en lugar de mostrar los "ID", lea esos "ID" en la tabla phpbazar_adcat y muestre su valor "NAME".
asi mismo en "picture1" y "picture2" necesito que pinte la imagen, no el valor del campo en formato textual.
Avisos GoogleUltimate Windows ToolsTools to Administrate,Report,Alert Control, Secure, Deploy & Migrate. www.pointdev.com/Ideal_AdminWeb based OLAP Clientfor Microsoft Analysis Services download Free Evaluation www.ReportPortal.comCurso Online de JavaAprende a programar Java y a desarrollar aplicaciones. Infórmate www.seas.es
#2 (permalink)
22/02/2011, 03:38
bienpiyao Fecha de Ingreso: agosto-
![Page 20: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/20.jpg)
2009
Mensajes: 153
Respuesta: obtener valor de otra tabla segun ID
Hola, para la primera cuestión prueba ésto:
Código PHP:
Ver original Copiar
$sql = "SELECT *
FROM phpbazar_ads";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res))
{
$sql1 = "SELECT name
FROM phpbazar_adcat
WHERE id = '".$row["id"]."'";
$res1 = mysql_query($sql1);
echo 'LO QUE QUIERAS IMPRIMIR';
![Page 21: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/21.jpg)
}
Espero que te sirva. Para lo de las fotos, tendrás que darme más datos como qué guardas en la base de datos (si la imagen, la ruta o el nombre), cómo la guardas y cómo la subes al servidor...
Cualquier duda, pregunta.
Un saludo!
#3 (permalink)
22/02/2011, 05:45
marcofbb
Fecha de Ingreso: junio-2009
Ubicación: Argentina
Mensajes: 454
Respuesta: obtener valor de otra tabla segun ID
Proba con la syntax INNER JOIN de MySQL
__________________Marcofbb | Artículos y Noticias sobre webmasters
La mejor forma de demostrarme que te ayude es con un gracias y karma =)
#4 (permalink)
22/02/2011, 10:41
crissrocca Fecha de Ingreso: febrero-2011
Mensajes: 34
![Page 22: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/22.jpg)
Respuesta: obtener valor de otra tabla segun ID
la imagen la guarda en el servidor y en una tabla dentro del campo "picture1" escribe por ejemplo el nombre de la imagen "blue_picture.jpg".
respecto a lo que me has pasado, te refieres a usar lo que me has puesto o a incluir lo que me has puesto dentro de while($articulo=mysql_fetch_array($resultados)) {...
porque realmente a mi lo que tengo ahora me funciona perfecto, tan solo necesito que esos valores ID que recoge y pinta los cambie por el "name" que esta en otra tabla, relacionado por el mismo ID.
#5 (permalink)
22/02/2011, 10:44
crissrocca Fecha de Ingreso: febrero-2011
Mensajes: 34
Respuesta: obtener valor de otra tabla segun ID
Ok, por lo que veo seria algo asi.
SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
voy a probarlo y os cuento.
#6 (permalink)
22/02/2011, 11:08
bienpiyao Fecha de Ingreso: agosto-2009
![Page 23: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/23.jpg)
Mensajes: 153
Respuesta: obtener valor de otra tabla segun ID
Respecto a lo de las fotos, si guardas el nombre de la foto en un campo varchar en la base de datos, para mostrarla sería tan sencillo como:
Código PHP:
<img width="180" height="205" src="ruta/<?php echo $foto; ?>">
Dónde ruta/ es la ruta del servidor donde se encuentra la foto y $foto es el nombre de la foto.
Prueba lo otro como te dijo marcofbb y si no consigues solucionarlo, dímelo que te pongo otro ejemplo un poco más claro.
SaludoS!!
#7 (permalink)
22/02/2011, 17:28
crissrocca Fecha de Ingreso: febrero-2011
Mensajes: 34
Respuesta: obtener valor de otra tabla segun ID
actualmente he visto que no puedo usar:SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
por que cada campo lo tiene que relacionar con una tabla diferente, digamos quetendria que ser algo asi:SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo SELECT campos FROM tabla1 INNER JOIN tabla3 ON tabla1.campo = tabla2.campo SELECT campos FROM tabla1 INNER JOIN tabla4 ON tabla1.campo = tabla2.campo
![Page 24: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/24.jpg)
esto es un poco caotico y supongo que esto se puede realizar de alguna manera mas facil, a ver si alguien tiene idea de como relacionarlo.
el tema de mostrar la imagen ya me funciona con la siguiente linea:
Código PHP:
Ver original Copiar
<? if ($articulo['picture1']){ ?>
<img width="180" height="200" src="http://localhost/<?php echo $articulo['picture1']; ?>"><br/>
<? } else {
echo "<b>Sin Imagen</b>";
}?>
#8 (permalink)
22/02/2011, 21:28
argy
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 615
Respuesta: obtener valor de otra tabla segun ID
mmm?, me late que debes de revisar tu modelo de BD, porque relacionar la misma columna con tantas tablas.
Utilizar una conexión al server dentro de un while no es recomendable.
__________________Software libre para un mundo libre.
![Page 25: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/25.jpg)
Eventualmente en el foro.
#9 (permalink)
23/02/2011, 02:58
bienpiyao
Fecha de Ingreso: agosto-2009
Mensajes: 153
Respuesta: obtener valor de otra tabla segun ID
Me alegro que te funcionara lo de la foto, ahora a ver si solucionamos lo otro.
Prueba esto:
Código PHP:
$resultados = mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1");$total_registros = mysql_num_rows($resultados);$resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros");$total_paginas = ceil($total_registros / $registros);
if($total_registros) {
while($articulo=mysql_fetch_array($resultados)) {
/*Aquí dentro debes hacer una consulta a la tabla phpbazar_adcat para sacar el NAME según el id*/
$sql = "SELECT nameFROM phpbazar_adcatWHERE id='".$variable."'";
$res= mysql_query($sql);$row = mysql_fetch_array($res);
![Page 26: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/26.jpg)
/*Ahora, cada vez que el while de una vuelta, tendrás sólo 1 id, por tanto te sacará el nombre de ese id y ya sólo te queda imprimirlo con $row["name"];Debes sustituir $variable por aquella variable que contenga el campo que une las dos tablas (que no sé cuál es).*/
echo "<b>".$articulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/".$articulo["formato"]."</b><br>";echo "<b>".$articulo["precio"]."</b><br>";echo "<b>".$articulo["picture1"]."</b>";echo "<b>".$articulo["picture2"]."</b><br>";echo "<font color='#666666'>".$articulo["location"]."</font><br><br><br>";}
} else {echo "<font color='darkgray'>(sin resultados)</font>";}
Pruébalo y me dices.
Un saludo!
#10 (permalink)
23/02/2011, 03:03
Lethiur
Fecha de Ingreso: marzo-2009
Mensajes: 21
Respuesta: obtener valor de otra tabla segun ID
Lo que yo haría sería guardar la ruta de la imagen en la base de datosde tal manera que al hacer la consulta, deberías de hacer esto.
![Page 27: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/27.jpg)
Código PHP:
echo "<img src='$articulo['picture1']'>";
De tal manera lo que puedes hacer para leer las IDs
Código PHP:
$sql = "SELECT name FROM phpazard_ads WHERE id='".$articulo['id']."';";$query = mysql_query($sql,$link);while($row = mysql_fetch_array($query,MYSQL_NUM)){ echo $row[0]."\n";}
Para repetir eso para cada ID, puedes meterlo dentro de un bucle.
#11 (permalink)
23/02/2011, 15:15
crissrocca
Fecha de Ingreso: febrero-2011
Mensajes: 34
Respuesta: obtener valor de otra tabla segun ID
Cita:
Iniciado por bienpiyao
Me alegro que te funcionara lo de la foto, ahora a ver si solucionamos lo otro.
![Page 28: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/28.jpg)
Prueba esto:
Código PHP:
$resultados = mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1"); $total_registros = mysql_num_rows($resultados); $resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros"); $total_paginas = ceil($total_registros / $registros);
if($total_registros) {
while($articulo=mysql_fetch_array($resultados)) {
/*Aquí dentro debes hacer una consulta a la tabla phpbazar_adcat para sacar el NAME según el id*/
$sql = "SELECT name FROM phpbazar_adcat WHERE id='".$variable."'";
$res= mysql_query($sql); $row = mysql_fetch_array($res);
/*Ahora, cada vez que el while de una vuelta, tendrás sólo 1 id, por tanto te sacará el nombre de ese id y ya sólo te queda imprimirlo con $row["name"]; Debes sustituir $variable por aquella variable que contenga el campo que une las dos tablas (que no sé cuál es).*/
echo "<b>".$articulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/".$articulo["formato"]."</b><br>"; echo "<b>".$articulo["precio"]."</b><br>"; echo "<b>".$articulo["picture1"]."</b>"; echo "<b>".$articulo["picture2"]."</b><br>"; echo "<font color='#666666'>".$articulo["location"]."</font><br><br><br>"; }
} else { echo "<font color='darkgray'>(sin resultados)</font>"; }
![Page 29: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/29.jpg)
Pruébalo y me dices.
Un saludo!
Usando la sentencia:
Código PHP:
$sql = "SELECT name FROM phpbazar_adcat WHERE id='".$articulo['catid']."'";
$res= mysql_query($sql); $row = mysql_fetch_array($res);
he podido imprimir los resultados correctamente vinculandolo con las tres tablas que contienen el NAME relacionado con ese ID.
esta opcion era algo que habia valorado pero pensaba que se podria usar algo mas rapido y sencillo, ya que he tenido que realizar la query 3 veces y a su vez esta dentro de otra query que llena el while.. pero bueno, si funciona lo dejaremos asi.
muchas gracias!!
ahora voy a pegarme con la query principal
Código PHP:
$resultados = mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1"); $total_registros = mysql_num_rows($resultados); $resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros"); $total_paginas = ceil($total_registros / $registros);
ya que tengo que recoger las variables que envia el FORM e incluirlas de esta forma
Código PHP:
$resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =$_POST['catid'] OR subcatid=$_POST['subcatid'] OR subcat2id=$_POST['subcat2id'] OR formato=$_POST['formato'] OR location=$_POST['location']"); $total_registros = mysql_num_rows($resultados); $resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =
![Page 30: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/30.jpg)
$_POST['catid'] OR subcatid=$_POST['subcatid'] OR subcat2id=$_POST['subcat2id'] OR formato=$_POST['formato'] OR location=$_POST['location'] ORDER BY precio DESC LIMIT $inicio, $registros"); $total_paginas = ceil($total_registros / $registros);
actualmente las variables las recoge el PHP correctamente y si solo incluyo un valor, por ejemplo:
Código PHP:
$resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =$_POST['catid'] ORDER BY id"); $total_registros = mysql_num_rows($resultados); $resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =$_POST['catid'] ORDER BY precio DESC LIMIT $inicio, $registros"); $total_paginas = ceil($total_registros / $registros);
funciona correctamente, pero no consigo sacarlo diciendole que haga la query con todas las variables.
supongo que es algo que esta mal puesto en la query o que para varios valores tengo que ponerlo de otra manera, no?
#12 (permalink)
26/02/2011, 06:25
crissrocca
Fecha de Ingreso: febrero-2011
Mensajes: 34
Respuesta: obtener valor de otra tabla segun ID
al final he visualizado la query resultado de esta consulta y he visto que una variable siempre
![Page 31: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/31.jpg)
pasaba un "0", de ahi el error al hacer las consultas.
Código PHP:
$sql = "SELECT * FROM phpbazar_ads WHERE publicview=1"; if($_GET['catid'] != '')$sql .= " AND catid LIKE '%".$_GET['catid']."%'"; if($_GET['subcatid'] != '')$sql .= " AND subcatid LIKE '%".$_GET['subcatid']."%'"; if($_GET['subcat2id'] != '')$sql .= " AND subcat2id LIKE '%".$_GET['subcat2id']."%'"; if($_GET['formato'] != '')$sql .= " AND formato LIKE '%".$_GET['formato']."%'"; if($_GET['location'] != '')$sql .= " AND location LIKE '%".$_GET['location']."%'"; $sql .= "ORDER BY fecha DESC";
$resultados = mysql_query($sql);
//y luego el resto del codigo...
ahora he pasado esa variable en caso de no estar seleccionada de "0" a "null" y funciona correctamnete.
gracias todos por la informacion.
![Page 32: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/32.jpg)
Recuperar la id después de su inserción con php20 de abril de 2005 Autor: cmacias Archivado en PHP/MySQL, Tutoriales
Cuantas veces hemos necesitado saber el “id” del registro que acabamos de insertar? Con una sola línea de código es posible…
Hay ocasiones en las que es necesario recuperar la id del último registro insertado, bien sea para mostrarlo en pantalla, o para pasarlo mediante una variable para insertar un registro relacionado.
En php es muy sencillo, simplemente hay que usar la función?mysql_insert_id()
Una vez hacemos una inserción desde dreamweaver, necesitamos buscar las siguientes líneas
mysql_select_db($database_conn, $conn);$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());$insertGoTo = "ok.php";
Y añadir lo siguiente:
mysql_select_db($database_conn, $conn);$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());$id = mysql_insert_id();$insertGoTo = "ok.php?id=".$id;
De esta manera y así de fácil, podemos obtener el último registro insertado. Más información acerca de mysql_insert_id(); en :http://es.php.net/manual/es/function.mysql-insert-id.php
Puedes seguir las respuestas a este post mediante nuestro RSS 2.0 feed. Puedes dejar una respuesta, o un trackback desde tu sitio.
subscribete a los comentarios en formato RSS
Hay 6 comentarios en este post.
![Page 33: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/33.jpg)
1. Alrevez dice:
04/05/2007 a las 1:38 am
Eso era preciso lo que estaba buscando, muchas gracias!
2. josue dice:
26/05/2008 a las 10:32 am
cmom puedo yo hacer eso en dream si modifico me borra el comportamiento s asi se dice
3. josue dice:
26/05/2008 a las 11:19 am
listo ya pude para lo q no puedan, modifiquen el codigo , aunq en el panel de comportamientos se desaparesca siempre sirve!!!
4. Andres Cayon dice:
26/05/2008 a las 8:04 pm
Josué:como has podido comprobar al editar el código, el comportamiento no desaparece sino que DW no lo reconoce porque no coincide con el código original. DW es muy estricto (quizá demasiado, pero es opinable) en ese aspecto.
5. josue dice:
30/05/2008 a las 2:09 pm
AMIGO AHORA TENGO UNA DUDA, COMO HAGO PARA ENVIAR ESO POR POST?? XQ EN LA SEGUNDA PAGINA, SE CAPTURA POR VARIABLE DE FORMULARIO (POST)… SE LLAMA ID2 GRACIAS AMIGO
![Page 34: Código para conseguir el último ID de inserción de una tupla](https://reader036.fdocuments.ec/reader036/viewer/2022062706/55721414497959fc0b93b865/html5/thumbnails/34.jpg)
6. Harold Hernan Gonzalez dice:
29/07/2009 a las 5:57 pm
Muchas gracias funciona muy bien.