Foros del Web » Programando para Internet » PHP »

insert id

Estas en el tema de insert id en el foro de PHP en Foros del Web. Amigos foreros Necesito que me ayuden con lo siguiente: Tengo un script en donde existen unas funciones que modifican una tabla x en mi bd. ...
  #1 (permalink)  
Antiguo 14/06/2003, 23:31
Avatar de Chaudx  
Fecha de Ingreso: marzo-2002
Ubicación: Quilpué, Chilito lindo
Mensajes: 345
Antigüedad: 22 años, 1 mes
Puntos: 2
insert id

Amigos foreros
Necesito que me ayuden con lo siguiente:
Tengo un script en donde existen unas funciones que modifican una tabla x en mi bd. mysql necesito guardar el ultimo registro actualizado de un campo autoincrementable en una variable y devolver esa variable para ser utilizado por otras operaciones.
Me explico:
Suponiendo la función
Código PHP:
function inserta_datos()
{
$su mysql_query("insert into ".LINKS_TABLE." values('', '$category', '$title' , '$capacidad' , '$mensaje' , '$calle' , '$ciudad', '$region' , '$telefono' , '$email' , '$nombre' , '$link', NOW(), '')");
$link_id mysql_insert_id();
return 
$link_id;

La variable $link_id, la necesito para colocarla como campo hidden en un formulario que se crea fuera de la función.
El problema es que la variable me toma el valor cero (0).
Por supuesto si antes de
return $link_id;
coloco un
echo $link_id;
me muestra el valor correcto..

¿como lo hago?

desde ya, muuuuchas gracias


saludos
__________________
Servicios computacionales
Linux registered User # 306587
Ubuntu user #14563
  #2 (permalink)  
Antiguo 14/06/2003, 23:37
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Necesitas cambiar tu celda llamada ID sea Indice Autoincrementable...

Modifícalo en el PHPMyAdmin, y agrégale esos dos cambios.
  #3 (permalink)  
Antiguo 15/06/2003, 00:11
Avatar de Chaudx  
Fecha de Ingreso: marzo-2002
Ubicación: Quilpué, Chilito lindo
Mensajes: 345
Antigüedad: 22 años, 1 mes
Puntos: 2
Amigo:
No sé si me expliqué bien,
el campo id, lo tengo de esa manera, por lo mismo necesito el número del último id, insertado, almacenarlo en la variable y retornar la variable para usarla en otro proceso..
¿Se entiende?
Luego de la función insertar()
Muestro un código con un campo hidden donde necesito poner el valor de esa variable.
pero el formulario me aparece con el campo hidden vacío.

Saludos

Gracias, ya lo solucioné
La verdad, me caí en un terrible error.
Pues quería tomar la variable como $link_id en el otro proceso
cuando debería haberla tomado con el nombre de la función, es decir:

$ultimo_id = inserta_datos();


Saludos
__________________
Servicios computacionales
Linux registered User # 306587
Ubuntu user #14563
  #4 (permalink)  
Antiguo 15/06/2003, 00:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ya que lo solucionastes .. sólo un "tip" de optimización de código:

Código PHP:
function inserta_datos()
{
$su mysql_query("insert into ".LINKS_TABLE." values('', '$category', '$title' , '$capacidad' , '$mensaje' , '$calle' , '$ciudad', '$region' , '$telefono' , '$email' , '$nombre' , '$link', NOW(), '')");
return 
mysql_insert_id();

No hace falta que asignes el valor del resultado de ejecutar mysql_insert_id() a una variable para luego devolverla como resultado de la llamada a tu función via return .. Puedes hacerlo ahí mismo en el return ..

Con ese "tip" ahorras un mínimo de recursos del servidor (proceso en asignar variables y memoria en mantenera ese instante) .. Total, esa variable, por el ambito de la función (y el cual lo has comprobado pues no la declarabas como global y pretendias leerla como tal) no te sirve de nada ..

Y .. bueno .. si no usas en esa función más tu variable $su también podrías eliminarla y ejecutar el mysql_query() directamente si no esperas nada de el (pues podrías usarlo en un condicional para determinar si fué ejecutada la consulta o no correctamente .. )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 15/06/2003 a las 00:34
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:33.