Votre question

MYSQL LAST_INSERT_ID

Tags :
  • Echo
  • Programmation
Dernière réponse : dans Programmation
16 Mai 2010 20:33:01

Bonjour

Voila j'essaye de faire une requête sur ma base de donnée afain de récupérer la dernière donnée insérée dans la table.
Voici ma requête:

  1. $req=mysql_query("SELECT id_intrusion,heure,date FROM tbl_intrusion WHERE id_intrusion=LAST_INSERT_ID() ") or die (mysql_error());
  2.  
  3. while($row=mysql_fetch_object($req)){
  4. echo $row->date;
  5. echo $row->heure;
  6.  
  7. }


J'ai droit à une belle page blache, à votre avis c'est la syntaxe de la requête qui est mal construite?
Cordialement

Autres pages sur : mysql last insert

16 Mai 2010 21:52:08

bonsoir;

Hum... Tu sais ce que tu devrais faire? Tu devrais ajouter, simplement, une colonne "timestamp" dans ta base de données...
et à l'intrusion, plutôt qu'inscrire heure et date, tu inscris le timestamp. A partir du timestamp tu peux retrouver très facilement l'heure, la date, le jour de la semaine écrit en toutes lettres et même la seconde de l'inscription dans la database.
Et puis après, tu n'as plus qu'à fetch le timestamp le plus grand (càd le plus proche de maintenant) et en extraire l'id.
m
0
l
16 Mai 2010 22:01:12

Heu oui, c'est-à-dire que grâce au timestamp, je pourrais récupérer la date et l'heure d'intrusion?
Par ce que actuellement j'ai deux tables, de type DATE,
Donc je ne sais pas quel méthode est le ieux adaptés,
Merci pour ta réponse
cordialement
m
0
l
Contenus similaires
16 Mai 2010 22:07:24

Bonsoir,
Pourquoi ne pas utilisé la fonction mysql_insert_id() ?
Plus d'information ici.
et aprés faire une requète

  1. mysql_querry("INSERT ...")
  2. $last_id=mysql_insert_id();
  3. SELECT * FROM ... WHERE ID = $last_id


EDIT : Mieux encore, tu déclare ta fonction :

  1. function insert_sql(querry) {
  2. if (mysql_querry(querry))
  3. {
  4. return mysql_insert_id();
  5. } else {
  6. return false;
  7. }
  8. }


(désolé pour l'indentation ...)

et après tu l'appel :

  1. $id = insert_sql("INSERT INTO...")



Bonne soirée
Tib
m
0
l
16 Mai 2010 22:19:05

rohan21 a dit :
Heu oui, c'est-à-dire que grâce au timestamp, je pourrais récupérer la date et l'heure d'intrusion?
Par ce que actuellement j'ai deux tables, de type DATE,
Donc je ne sais pas quel méthode est le ieux adaptés,
Merci pour ta réponse
cordialement


En fait, le timestamp est un grand chiffre qui dénombre les secondes qui se sont déroulés depuis le 1er janvier 1970, si mes souvenirs sont bons. Rien qu'avec ça, PHP te calcule n'importe quelle date qui se situe entre 1970 et maintenant.
Donc, 'timestamp' à lui tout seul peut remplacer tes deux colonnes "date". Et en plus, il a l'avantage de pouvoir trier tes inscriptions dans le temps très facilement, et te retrouver le plus récent rien qu'en cherchant le timestamp le plus grand.


Ceci dit, si ton 'id' est en auto_increment, tu devrais aussi retomber rapidement sur le dernier 'id' inscrit, il s'agit juste du plus grand.
m
0
l
16 Mai 2010 22:30:53

Salut,

En faire je vais vous expliquer ma situation, je doit faire un projet en info et dans mon groupe on est 4 personnes. Il y a une personne qui doit écrire dans la bdd, à chaque nouvelle intrusion.
Et donc elle utilise principalement le langage c# pour les requêtes et la connexions.
Moi de mon coté, je doit m'assurer de séléctionner le dernier enregistrement donc la dernière intrusion.
et l'afficher sur le site.
Donc pour répondre tibubu, je n'ai pas de INSERT.

Je vais essayer vos différentes méthodes, mais j'aimerai bien voir ce que ca donne avec LAST_INSERT_ID.
Merci Xim, de m'avoir éclairci à propos du timestamp.
Cordialement
m
0
l
16 Mai 2010 22:35:14

rohan21 a dit :
Salut,

Je vais essayer vos différentes méthodes, mais j'aimerai bien voir ce que ca donne avec LAST_INSERT_ID.



Le danger d'utiliser cette fonction viens si tu as plusieurs table dans ta bdd. Elle renvoie en effet le dernier ID insérer... dans la base et est propre à chaque connexion :

Citation :

SOURCE

Retourne le dernier identifiant automatiquement généré par une colonne AUTO_INCREMENT.

mysql> SELECT LAST_INSERT_ID();
-> 195

Le dernier ID généré est conservé par le serveur pour chaque connexion. Un autre client ne la modifiera donc pas, même s'ils génèrent une autre valeur AUTO_INCREMENT de leur coté. Ce comportement permet de s'assurer que les actions des autres clients ne perturbe pas les actions du client en cours.


Donc je pense que le timestamp que propose Xiiime est en effet la meilleurs solution !
m
0
l
16 Mai 2010 22:49:19

Okay je vous remercie beaucoup pour vos réponses, car ca m'a bien orienté.
Ciao
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS