Page 1 sur 1

Récupérer la valeur d'un auto_increment

Posté : 18 janv. 2020, 16:22
par bernard25
Bonjour à Tous,

php 7.4 mysql 5.7 :

Pour une galerie photos, j'aimerai enregistrer le champ photo comme ceci : $lieu.$id

L'enregistrement 654 contient la photo photo654.jpg

J'essaie en vain de récupérer la valeur du champ id autoincrement

Code : Tout sélectionner

$reponse = $bdd->prepare('SELECT * FROM '.$exterieurs_BDD.' ORDER BY id DESC'); $reponse->bindParam(':id', $id, PDO::PARAM_INT); $reponse->bindParam(':menu', $menu, PDO::PARAM_STR); $reponse->bindParam(':titre', $titre, PDO::PARAM_STR); $reponse->bindParam(':dossier', $dossier, PDO::PARAM_STR); $reponse->bindParam(':photo', $photo, PDO::PARAM_STR); $reponse->execute(); $donnees = $reponse->fetch(); $nombre_enregistrements = $donnees['id'] + 1;
Je récupère le dernier id +1 mais si je supprime un enregistrement j'aimerai avoir la 'Vrai' dernière valeur

Merci de votre aide

Re: Récupérer la valeur d'un auto_increment

Posté : 18 janv. 2020, 16:26
par Saian
Salut, bah en principe tu utilises la méthode PDO::lastInsertId après avoir procédé à l'insert pour récupérer l'id de la ligne insérée.
https://www.php.net/manual/fr/pdo.lastinsertid.php

Donc tu peux faire un insert sans l'image puis un update.

Re: Récupérer la valeur d'un auto_increment

Posté : 18 janv. 2020, 16:39
par bernard25
Bonjour Saian,

Merci pour cette réponse rapide,

Effectivement, j'y ai pensé mais cela implique un premier insert, recupération de l'id, upload image puis update

je pensais que l'on pouvais récupérer le dernier id comme

Code : Tout sélectionner

ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Re: Récupérer la valeur d'un auto_increment

Posté : 18 janv. 2020, 16:45
par Saian
A confirmer mais même s'il était possible de récupérer la prochaine valeur de l'auto increment, ce n'est pas à faire. Une ligne pourrait être insérée par un autre script entre le moment ou ton code récupère la valeur d'auto increment et le moment ou il procèdes à l'insert. Du coup l'id serait fausse.

La procédure c'est de faire l'insert puis récupéré l'id de la ligne insérée avec lastinsertid. C'est pour ça que je te dis que tu dois faire un insert sans l'image puis faire un update avec l'image.

EDIT
Et non ça ne t'obliges pas à faire l'upload et l'update séparément de l'insert. Dans ton script simplement tu fais l'insert, tu récupères l'id, tu renommes le fichier uploadé, puis tu fais l'update de la colonne photo where id = lastinsertid.

Re: Récupérer la valeur d'un auto_increment

Posté : 18 janv. 2020, 17:06
par bernard25
Merci beaucoup, je vais suivre ta solution