hola
me gustaria saber como leo el ultimo registro de una base de datos (MySql)
ojala con un ejemplo
| |||
Pues depende como tengas la estrutura de tu tabla así será la consulta ... Lo ideal es que tengas un campo Autoincremental y que este sea Único. El típico "ID" ... Con eso es sencillo la consulta .. Pero si no describes la estructura (nombre de los campos y su tipo) es complicado darte un "ejemplo" .. De todas formas .. esto tampoco es cosa de PHP .. Por lo menos la parte pricipal que sería la consulta SQL que debes hacer .. Por ende, muevo tu mensaje al foro "Base de datos" .. Aporta los datos que te solicito y veras que se te dá una mejor respuesta allá. Un saludo, pd: (se me olvidó) .. Si usas un campo autoincremental .. tienes Opcione "SQL" para obtener el último "ID" generado .. y tambien opción PHP .. Pero siempre es recomendable que uses la opción SQL ..
__________________ 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; 11/04/2003 a las 21:40 |
| ||||
la estructura es muy simple tengo solo 2 campos id que es autonumerico y nombre , la idea final es saber cuantos nombres hay en la base de datos,( yo lo se porque veo el ultimo id :) ) pero quiero mostrarlo.
__________________ :adios: ..."Hay dos cosas que son infinitas: el universo y la estupidez humana; y no estoy muy seguro acerca del universo." Albert Einstein |
| |||
Ok, pues entonces lo que necesitas es "CONTAR" el total de registros .. NO ver el último ID generado .. ¿Que pasaría si borras un registro de esa tabla? (pasaría que el campo auincremental sigue en su cuenta progresiva por eso tu cálculo del total ya no sería correcto): SELECT COUNT(id) as total FROM tabla Ahí tendras UN solo registro llamado "total" (es un alias) con el total de registos (conteo) que tengas en esa tabla ... Via PHP lo puedes obtener simplemente: Código PHP: mysql_num_rows() requiere de una consulta tipo: SELECT * FROM tabla Osese, se obtienen el total de registros para luego calcular su total .. Mientras q la opción SQL SOLO generar UN único registro con ese dato del total calculado (con eso ganas en tiempo de proceso de tus consultas ..) Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Ruchu.. pero si borras un registro de tu BD usando un campo auto incremental como es el "ID" .. el MAX(id) no reflejaría el total de registros que tiene esa tabla sino el ID último .. (lee la seguna intervención de goya y veras que "cambió" el fondo de la pregunta) ... Para el último ID .. está tambien: SELECT LAST_INSERT_ID() as ultimo_id FROM tabla y .. bueno habría que probarlo .. pero si hay función especifica para tal fin .. es probable que sea mas rápido incluso que un MAX(id) ... Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
en sql server esta esta otra forma, es especifica para sacar el ultimo id. Set loRs = cnn.Execute("insert into lagaleria_obras (titulo) values ('"&replace(request.form("titulo"),chr(34),"''")&" '); SELECT @@IDENTITY AS NewID") Set loRs = loRs.NextRecordSet() nuevoId = loRs("NewID") loRs.close Set loRs=Nothing |
| ||||
Digo yo que no tiene que ver el tipo de base de datos que usemos para recorrer el recordset. Eso solo importa para definirlo en el DRIVER al hacer la conexion Para contar el numero de registros que hay en una base de datos: totalregistros=rs.recordcount Y para colocarnos en el ultimo y leerlo. rs.movelast Y para saber que codigo o ID tiene ese registro: <%=rs("ID")%> |
| |||
maestro .... Si hablamos de PHP y Mysql . lo que es PHP tiene funciones nativas para acceder a Msyql .. Por ejemplo tienes mysql_num_rows() y mysql_insert_id() para lo mismo que pusistes tu desde ASP (supongo q usando tus objetos de ADO o como le llamen en ASP ..) Pero, Si no quieres ejecutar cierta función nativa de PHP o de ASP .. o del lenguaje de programación que uses para acceder a Mysql .. Puedes usar una simple consulta (query) que use las funciones de Msyql: LAST_INSERT_ID() q son propias de este .. Si pasas por alguna capa de abstraccion de BD como ADO (o en PHP ADOdb o cualquiera del monton que existen) .. ahí cambia la cosa pues ya tienen implementados métodos para ello que los llamas igual para varios tipos de base de datos .. sea Msyql, SQL server .. o lo q sea ) Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Opss!! Al responder a este mensaje pense que estaba posteado en el foro de ASP, por eso hice omentarios directamente sobre ASP. De todas formas de PHP no tengo conocimientos por lo que no te puedo discutir los metodos. Pero sin embargo a que llamamos habitualmente funciones nativas?, a una serie de funciones implementadas en el lenguaje de programacion que nos permiten hacer una acciones. Pues tengo una duda, por que mencionas las funciones de ASP a traves de ADO, o a traves de FSO (para el acceso a ficheros) como no ativas y las de PHP como nativas, tiene que existir una capa de abstraccion igual que la que representa ADO para ASP en el lenguaje PHP, ¿no? Aclaramelo cuando puedas. |
| |||
Pues en PHP como "nativas" .. llamo a esas funciones mysql_xxx() que describí .. Esas funciones SOLO conectan a ese tipo de Base de datos .. (si mal no recuerdo .. las ADO conectan a todo lo que le entre por ODBC ..?) .. Lo mismo hay otras funciones: mssql_xxxx() que son "nativas" para conectar a SQL server directo .. Y tambien hay otras por ejemplo odbc_xxxx() para interactuar con cualquier BD que entre por ODBC .. (y así con un total de unos 15 motores de BD diferentes ..) Y como "capa de abastracción" en PHP (por lo menos) se le denomina a classes (objetos) o extensiones que hacen esas funciones de acceso a varios motoros de Base de datos (Mysql, SQL server, PostgreSQL .. etc) via unos mismos "métodos" (funciones) para interactuar con esa BD .. (ejemplos son ADOdb (de las mas completas)) Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |