8
votes

Obtenir le prochain incrément automatique

Je sais que ce n'est pas si compliqué, mais je ne me souviens pas comment faire.

J'ai juste besoin de connaître l'incrémentation automatique suivante. P>

$result = mysql_query("
    SHOW TABLE STATUS LIKE Media
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];


0 commentaires

5 Réponses :


16
votes
$result = mysql_query("
    SHOW TABLE STATUS LIKE 'Media'
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];
The name of the table needed to be wrapped with single quotes like this: 'table_name'So it works just fine now.:)

2 commentaires

Fonctionne très bien!! Est-il assez fiable pour utiliser l'ID NEXT_INCREMEMEME, en tant que clé étrangère pour insérer dans une autre table?


De longneck ci-dessous: "Si ... vous avez plusieurs utilisateurs [à l'aide du tableau] en même temps, vous obtiendrez fréquemment la mauvaise valeur."



9
votes

La requête doit ressembler à ceci:

SHOW TABLE STATUS WHERE `Name` = 'Media';


0 commentaires

2
votes

Autre moyen, mais lent, est le suivant: xxx

L'information_schema est principalement utile pour obtenir des données de nombreux schémas.


2 commentaires

Des raisons pour lesquelles cela est lent?


Ceci est lent car pour des bases de données contenant des milliers (ou des millions) ou des tables, l'information_schema DB devient incroyablement grande. Il est préférable d'utiliser le statut de table Afficher la table comme «Nom» requête.



-2
votes

Si vous devez connaître le Suivant auto_incrènement, il est probablement 99% probablement que vous le faites mal. Au lieu de recevoir le prochain auto_incrènement, vous devez simplement faire l'insert sur lequel vous serez sur le point de faire, puis utiliser Sélectionnez Last_insert_ID () pour obtenir la valeur Auto_incrimentation de cet insert.

Si vous essayez de deviner la prochaine valeur Auto_Increment et que vous disposez de plusieurs utilisateurs en le faisant en même temps, vous obtiendrez souvent la mauvaise valeur.


4 commentaires

-1 parce que si la table n'a pas d'entrées, mais l'incrément automatique est là?


Ensuite, vous faites toujours quelque chose de mal. Dans quelle circonstance voudriez-vous faire cela? L'OP veut obtenir la valeur suivante afin de pouvoir définir une clé étrangère dans une autre table. C'est une mauvaise idée. L'enregistrement doit d'abord être inséré dans cette table, puis obtenir la valeur d'incrémentation automatique créée, puis insérez la clé étrangère. Le faisant l'inverse, c'est comme demander comment soutenir votre voiture de votre garage avant de mettre la clé de l'allumage.


Pas le point. Point est que la question était "Comment obtenir le prochain incrément automatique" non "Comment obtenir la dernière carte d'identité insérée". Donc, fondamentalement, si la table est vide et que vous souhaitez connaître l'incrément automatique suivant pour créer un titre de timbre (exemple: "STAMPTITLE-22"). Ensuite, la dernière identification insérée ne fonctionnera pas.


C'est toujours la mauvaise approche. Insérez pour obtenir l'identifiant attribué, puis mettez à jour si vous devez. Mais encore une fois, essayant de deviner la prochaine valeur de auto_incrimentation est universellement une mauvaise idée.



0
votes

Vous pouvez également utiliser cette fonction xxx


0 commentaires