7
votes

Mysql max (ID) appelé de PHP produit une valeur étrange

J'essaie simplement d'obtenir la valeur incrémentée automatique d'une table actuellement la plus élevée. Je n'ai pas besoin de savoir quel est le prochain incrément automatique, juste la valeur la plus élevée de ce qui se trouve dans la table en ce moment. J'utilise le code ci-dessous, mais quelle que soit l'incrément automatique réel, quel tableau I est inséré dans quelle table a été mis à jour / modifié, ou tout autre facteur que je peux voir, la valeur renvoie toujours ID de ressource # 4 . Cela me perplexe pour deux raisons. D'abord, je ne comprends pas pourquoi le numéro est toujours 4 , deuxième, je ne comprends pas pourquoi je récupère une valeur de chaîne (avec des lettres et un symbole) au lieu d'un entier. Quel est l'accord ici?


0 commentaires

5 Réponses :


3
votes

mysql_query retourne une poignée de résultat, pas le résultat réel. En d'autres termes, le résultat de votre requête est enregistré comme ID de ressource n ° 4 (et ce n'est pas garanti d'être la même chose toujours, c'est une coïncidence si vous le voyez de cette façon).

Pour accéder au résultat, vous devez utiliser quelque chose. Comme mysql_fetch_array ou l'une des autres fonctions de la même famille.

quelque chose comme ceci: xxx


0 commentaires

16
votes

mysql_query ne renvoie pas la valeur de la requête, il renvoie une ressource de résultat. Pour obtenir la valeur réelle, vous devez utiliser l'un des fonctions MYSQL_FETCH _ * , ce qui vous passe la ressource de résultats obtenue à partir de mysql_query . XXX < p> ou la plus courte ... xxx


2 commentaires

Je me sens une sorte d'affichage stupide que là-bas, mais oui, je l'ai fait comme ça d'abord, mais le résultat renvoyé était '' . Je vais éditer mon message pour vous montrer ce que j'ai essayé au tout premier (ce que vous suggérez).


Ok, je vois ce que j'ai mal fait maintenant. Mon code d'origine que j'ai utilisé mysql_fetch_array puis j'ai foiré là où vous avez le 0 dans $ rangée [0] . Merci pour ton aide!



0
votes
$highest_id = mysql_result(mysql_query("SELECT MAX(c_id) FROM customers"));

1 commentaires

Très concis, mais devrait être: $ supérieures_id = mysql_result (mysql_query ("sélectionnez max (c_id) à partir de clients"), 0);



0
votes

la façon de faire de ce
Supposons que vous ayez une base de données ($ ceci-> db) xxx


0 commentaires

3
votes

Ceci est ma réponse: xxx

Lorsque vous utilisez mysqli_fetch_row Il ne cherchera qu'une ligne, car nous ne voulons qu'une ligne. $ ligne sera un tableau. Nous devons donc avoir sa valeur via l'indice de tableau.


0 commentaires