Le champ 'id' de ma table augmente automatiquement lorsque j'insère une ligne. Je veux insérer une ligne, puis obtenir cet identifiant.
Je le ferais exactement comme je l'ai dit, mais y a-t-il un moyen de le faire sans me soucier du temps entre l'insertion de la ligne et l'obtention de l'identifiant?
Je sais que je peux interroger la base de données pour la ligne qui correspond aux informations entrées, mais il y a un changement important, il y aura des doublons, la seule différence étant l'id.
mysql_insert_id() will convert the return type of the native MySQL C API function mysql_insert_id() to a type of long (named int in PHP). If your AUTO_INCREMENT column has a column type of BIGINT (64 bits) the conversion may result in an incorrect value. Instead, use the internal MySQL SQL function LAST_INSERT_ID() in an SQL query. For more information about PHP's maximum integer values, please see the integer documentation.
\La fonction MySQL
LAST_INSERT_ID()
fait exactement ce dont vous avez besoin: elle récupère l'identifiant qui a été inséré lors de cette session . Il est donc sûr à utiliser, même s'il existe d'autres processus (d'autres personnes appelant exactement le même script, par exemple) qui insèrent des valeurs dans la même table.La fonction PHP
mysql_insert_id()
fait la même chose que l'appelSELECT LAST_INSERT_ID()
avecmysql_query()
.la source
echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID(600)'); echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID()');
Le secondmysql_insert_id()
ne reflète pas 600, où comme lemysql_query('SELECT LAST_INSERT_ID()')
fera. Pour que lemysql_insert_id()
reflète le changement, vous devez d'abord effectuer une insertion ou une mise à jour (qui peut affecter 0 ligne). Voir le tout dernier paragraphe de: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-idQuant au site web de PHP, mysql_insert_id est désormais obsolète et nous devons utiliser PDO. Pour ce faire avec PDO, procédez comme suit:
la source
Comme l'a dit @NaturalBornCamper, mysql_insert_id est désormais obsolète et ne doit pas être utilisé. Les options sont maintenant d'utiliser PDO ou mysqli. NaturalBornCamper a expliqué PDO dans sa réponse, donc je vais montrer comment le faire avec MySQLi ( MySQL amélioré ) en utilisant mysqli_insert_id .
Consultez la documentation PHP pour plus d'exemples: http://php.net/manual/en/mysqli.insert-id.php
la source
Je veux juste ajouter un petit détail concernant
lastInsertId()
;Lors de la saisie de plusieurs lignes à la fois, il ne renvoie pas le dernier Id , mais le premier Id de la collection des dernières insertions.
Prenons l'exemple suivant
Ce qui se passe ici, c'est que je pousse dans
my_table
deux nouvelles lignes. L'identifiant de la table est auto-incrémenté. Ici, pour le même utilisateur, j'ajoute deux lignes avec un autrevarNumb
.La valeur écho à la fin sera égale à l'id de la ligne où
varNumb=1
, ce qui ne signifie pas l'id de la dernière ligne, mais l'id de la première ligne qui a été ajoutée dans la dernière requête.la source
Un exemple.
La ligne de code
$course_id = $query_new->insert_id;
affichera l'ID de la dernière ligne insérée. J'espère que cela t'aides.la source
Essayez comme ceci, vous pouvez obtenir la réponse:
Jetez un œil aux liens suivants:
http://www.w3schools.com/php/func_mysqli_insert_id.asp
http://php.net/manual/en/function.mysql-insert-id.php
Veuillez également noter que cette extension était obsolète dans PHP 5.5 et supprimée dans PHP 7.0
la source
J'ai trouvé une réponse dans le lien ci-dessus http://php.net/manual/en/function.mysql-insert-id.php
La réponse est:
la source
mysql
réponse non sécurisée , ne l'utilisez jamais.Essayez ceci ... cela a fonctionné pour moi!
la source
Une autre réponse possible sera:
Lorsque vous définissez la table, avec les colonnes et les données qu'elle contiendra. L'ID de colonne peut avoir la propriété AUTO_INCREMENT .
Par cette méthode, vous n'avez pas à vous soucier de l' identifiant , il sera créé automatiquement .
Par exemple (tiré de w3schools )
J'espère que cela sera utile pour quelqu'un.
Edit: Ce n'est que la partie où vous définissez comment générer un ID automatique, pour l'obtenir après sa création, les réponses précédentes sont correctes.
la source