Récupérer la dernière id d'une base mysql

Résolu
Bonjour,

J'ai ma base de donnée mysql en local comme ceci :

connexion: 'localhost','root',null
base de donnée: support

table: ticket
id - pseudo - email
1 ............ - ........
2 ............ - ........
3 ............ - ........
4 ............ - ........
...

Je souhaite récupérer sous forme de variable php le champ "pseudo" et "email" de la dernière id.

Je pense qu'il y a moyen avec

"SELECT MAX(id) FROM ticket"

J'ai fait des recherches mais je ne trouve rien qui fonctionne.
Merci d'avance
--
gautier019

3 réponses

  1. Contributeur
    Salut, utilise des sous-requêtes:
    SELECT * FROM ticket WHERE id=(SELECT max(id) FROM ticket)
    1
    1. Mais je ne sais pas comment faire, avant j'utilisait :

      try {
      
      $ms_connexion = new PDO('mysql:host='.$ms_host.';dbname='.$ms_name.'; charset=utf8', $ms_user, $ms_pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
      $ms_fonctional = 'on';

      if(!empty($_SESSION['session'])) {
      $req_selectMembre = $ms_connexion->prepare('SELECT * FROM membres WHERE session=:session');
      $req_selectMembre->execute(array(
      'session' => $_SESSION['session']
      ));

      $selectMembre = $req_selectMembre->fetch();
      $pseudo = $selectMembre['pseudo'];
      $mail = $selectMembre['mail'];
      } else {
      return false;
      }
      } catch (PDOException $e) {
      $ms_fonctional = 'off';
      }

      J'ai vu ça dans un tuto et la je suis vraiment pommé 0.0
      1
      1. Contributeur
        Je vois pas vraiment où tu veux caser cette séléction de dernier ID: le code que tu as donné est un code typique d'un système de membres...
        0
      2. oui est c'est la première partie qui consiste à envoyer les données et je cherche le moyen d'avoir la dernière ID pour la seconde partie.
        0
      3. Contributeur
        OK, bah dans le même try/catch, ajoute:
        $req_selectDernier = $ms_connexion->query('SELECT * FROM ticket WHERE id=(SELECT max(id) FROM ticket)');
        
        $dernier = $req_selectDernier->fetch(PDO::FETCH_ASSOC);
        $dernier
        sera un tableau associatif des colonnes de la ligne avec l'ID max:
        $dernierPseudo = $dernier['pseudo'];
        
        $dernierEmail = $dernier['email'];
        0
      4. Merci !

        Sait tu comment faire pour ensuite supprimer cette ligne en php ?
        0
      5. Contributeur
        $ms_connexion->query('DELETE FROM ticket WHERE id='.$dernier['id']);
        Pas besoin d'une requête 2 temps pour éviter les injections: il ne peut pas y en avoir vu que l'utilisateur ne touche pas au champ
        id
        , qui est un int en auto-increment géré par la BDD.
        0