<?php
$result = mysql_query('SELECT t.messageid, t.message
FROM TABLE t
ORDER BY t.messageid DESC
LIMIT 1')ordie('Invalid query: '. mysql_error());//print values to screenwhile($row = mysql_fetch_assoc($result)){
echo $row['messageid'];
echo $row['message'];}//Free the resources associated with the result set//This is done automatically at the end of the script
mysql_free_result($result);?>
La requête SQL:
SELECT t.messageid, t.message
FROM TABLE t
ORDER BY t.messageid DESC
LIMIT 1
...utilise la COMMANDE PAR définir les valeurs de sorte que la valeur la plus élevée est la première ligne dans le jeu de résultats. La LIMITE dit que de toutes ces lignes, seul le premier est en fait retourné dans le jeu de résultats. Parce que messageid est en auto-increment, la valeur la plus élevée est la plus récente...
C'est parfait, merci! Juste faire attention que cette méthode ne garantit pas que la ligne que vous allez chercher est celui que vous venez d'insérer (ie. dans le même script), par exemple dans le cas de plusieurs insertions simultanées.
Enregistrements dans une base de données relationnelle n'ont pas une valeur intrinsèque de "l'ordre" de sorte que vous ne peut pas aller chercher le "dernier" enregistrement sans une sorte de ORDER BY clause.
Par conséquent, afin de récupérer le dernier enregistrement, il vous suffit d'inverser le ORDER BY de l'alinéa (changement ASC à DESC ou vice versa), puis sélectionnez le première résultats.
Si vous avez un auto-incrément de domaine et vous voulez juste trouver la dernière valeur qui a été insérée, vous pouvez utiliser le fait que l'auto-incrémentation des champs sont de plus en plus (donc le "dernier" l'un sera celui avec la valeur la plus élevée) et de faire quelque chose comme ceci:
SELECT *
FROM my_table
ORDER BY id_field DESC
LIMIT 1
Bien sûr, vous pouvez sélectionner la dernière ligne par le tri des DESC dans votre requête. Mais que faire si vous souhaitez sélectionner la première ligne, puis le dernier. Vous pouvez exécuter une nouvelle requête, mais vous pouvez également utiliser la fonction mysql_data_seek. code de vérification ci-dessous:
selectMessageID,MessagefromTable
order byMessageID desc
limit 1;
Je suis trop rouillé avec PHP pour vous donner la bonne syntaxe pour l'exécution de cette.
Cette requête fonctionne parce que vous avez un auto-incrémentation champ d'identification (MessageID). En ordonnant les résultats en ce domaine dans l'ordre décroissant (du plus grand au plus petit) de l'ordre nous sommes en mesure de retourner les enregistrements dans la table dans l'ordre inverse. Le limit 1 clause simplement les limites de la ensemble de résultats à un enregistrement - le dernier de la table.
Entendez-vous le dernier enregistrement ou avez-vous besoin de l'id du dernier enregistrement inséré? Pour cela, vous utilisez PHP mysql_insert_id() fonction. Ou si vous utilisez le myusqli extension de l'utilisation de $mysqli->insert_id.
le dernier enregistrement dans la table, j'.e 20 messages dans le tableau, la récupération du message 20.
Une chose à retenir est que les données ne pas sauvegardées dans le ordre d'insertion dans toute base de données MYSQL. Donc, afin d'obtenir la dernière saisie record u va avoir une incrément automatique champ. Puisqu'il y a un auto incrément de champ dans ce tableau, nous sommes bon pour aller.
Le script ci-dessous vous aidera à obtenir la dernière saisie record
<?php
$sql ="SELECT * FROM table_name ORDER BY MessageID DESC LIMIT 2";
$result_set = mysql_query($sql);if($result_set){while($row = mysql_fetch_array($result_set)){
echo "Message Id: ".$row['MessageID']."<br>";
echo "Message: ".$row['Message']."<br>";}//creating alert
echo "<script type=\"text/javascript\">alert('Data was Retrieved
successfully');</script>";}else{//creating alert
echo "<script type=\"text/javascript\">alert('ERROR! Could Not Retrieve
Data');</script>";}?>
La requête sélectionne tous les enregistrements dans la table et les classe selon l'ordre décroissant de la MessageID (comme c'est le incrément automatique de champ) et les limites, le résultat renvoyé à un seul enregistrement. Donc, puisque le tableau est ordonné selon l'ordre décroissant de la MessageID seulement la dernière saisie record sera retourné.
REMARQUE: si vous utilisez une version plus récente, vous devrez utiliser mysqli_query($connection_variable,$sql); au lieu de mysql_query($sql); et mysqli_fetch_array($result_set) au lieu de mysql_fetch_array($result_set)
Utilisation mysql_query:
La requête SQL:
...utilise la COMMANDE PAR définir les valeurs de sorte que la valeur la plus élevée est la première ligne dans le jeu de résultats. La LIMITE dit que de toutes ces lignes, seul le premier est en fait retourné dans le jeu de résultats. Parce que
messageid
est en auto-increment, la valeur la plus élevée est la plus récente...Juste faire attention que cette méthode ne garantit pas que la ligne que vous allez chercher est celui que vous venez d'insérer (ie. dans le même script), par exemple dans le cas de plusieurs insertions simultanées.
OriginalL'auteur OMG Ponies
Enregistrements dans une base de données relationnelle n'ont pas une valeur intrinsèque de "l'ordre" de sorte que vous ne peut pas aller chercher le "dernier" enregistrement sans une sorte de
ORDER BY
clause.Par conséquent, afin de récupérer le dernier enregistrement, il vous suffit d'inverser le
ORDER BY
de l'alinéa (changementASC
àDESC
ou vice versa), puis sélectionnez le première résultats.Si vous avez un auto-incrément de domaine et vous voulez juste trouver la dernière valeur qui a été insérée, vous pouvez utiliser le fait que l'auto-incrémentation des champs sont de plus en plus (donc le "dernier" l'un sera celui avec la valeur la plus élevée) et de faire quelque chose comme ceci:
OriginalL'auteur Dean Harding
Bien sûr, vous pouvez sélectionner la dernière ligne par le tri des DESC dans votre requête. Mais que faire si vous souhaitez sélectionner la première ligne, puis le dernier. Vous pouvez exécuter une nouvelle requête, mais vous pouvez également utiliser la fonction mysql_data_seek. code de vérification ci-dessous:
Espère que cette aide
OriginalL'auteur simon
La requête MySql devrait ressembler à ceci:
Je suis trop rouillé avec PHP pour vous donner la bonne syntaxe pour l'exécution de cette.
Cette requête fonctionne parce que vous avez un auto-incrémentation champ d'identification (
MessageID
). En ordonnant les résultats en ce domaine dans l'ordre décroissant (du plus grand au plus petit) de l'ordre nous sommes en mesure de retourner les enregistrements dans la table dans l'ordre inverse. Lelimit 1
clause simplement les limites de la ensemble de résultats à un enregistrement - le dernier de la table.OriginalL'auteur Andrew Hare
Qu'entendez-vous par "le dernier résultat"? Vous devez préciser un peu plus.
Voulez-vous dire par "la dernière entrée, je me suis inscrit"?
Dans ce cas, vous devez utiliser la méthode appropriée (en fonction de l'extension que vous utilisez), mysqli->insert_id OU mysql_insert_id.
Si vous voulez dire "la dernière entrée de la table", une requête SQL comme Andrew Hare est juste ce dont vous avez besoin.
OriginalL'auteur The Mighty Rubber Duck
Entendez-vous le dernier enregistrement ou avez-vous besoin de l'id du dernier enregistrement inséré? Pour cela, vous utilisez PHP
mysql_insert_id()
fonction. Ou si vous utilisez le myusqli extension de l'utilisation de $mysqli->insert_id.OriginalL'auteur Icode4food
pour une raison quelconque (je ne sais pas pourquoi), mon patron me forcer pour obtenir les données de cette façon:
Bien sûr, vous devez tout de OMG Poneys de de la réponse, je vous dis juste une autre façon de le faire =)
J'espère que cette aide.
OriginalL'auteur JMASTER B
Vous devez utiliser une requête SELECT. Comment SÉLECTIONNER des œuvres.
SELECT * FROM table
- sélectionne tout dans une table (id, ligne 1, ligne 2,...)SELECT id FROM table
- ne sélectionne que chaque rangée de la table.Si vous le savez maintenant, la façon de sélectionner, vous pouvez utiliser de la logique supplémentaire.
sélectionne tout, de table de table, la commande par code de commande de la DESCENTE et les limites de la requête à un seul résultat.
Si vous voulez faire comme ceci:
SELECT * FROM table ORDER by id ASC limit 1;
- vous obtenez 1 entrée dans la base de données.Vous pouvez commander en toute ligne vous voulez.
Espère que cela aide.
OriginalL'auteur saki_theflaki
Une chose à retenir est que les données ne pas sauvegardées dans le ordre d'insertion dans toute base de données MYSQL. Donc, afin d'obtenir la dernière saisie record u va avoir une incrément automatique champ. Puisqu'il y a un auto incrément de champ dans ce tableau, nous sommes bon pour aller.
Le script ci-dessous vous aidera à obtenir la dernière saisie record
La requête sélectionne tous les enregistrements dans la table et les classe selon l'ordre décroissant de la MessageID (comme c'est le incrément automatique de champ) et les limites, le résultat renvoyé à un seul enregistrement. Donc, puisque le tableau est ordonné selon l'ordre décroissant de la MessageID seulement la dernière saisie record sera retourné.
REMARQUE: si vous utilisez une version plus récente, vous devrez utiliser mysqli_query($connection_variable,$sql); au lieu de mysql_query($sql); et
mysqli_fetch_array($result_set) au lieu de mysql_fetch_array($result_set)
OriginalL'auteur Suleka_28
simple comme ça
OriginalL'auteur
ce code php fonctionne bien
si vous n'avez pas les entrées simultanées d'aller dans une table.b'cause les entrées simultanées peuvent pas aller selon leur ordre d'insertion.
OriginalL'auteur
OriginalL'auteur DataVader