2010-06-12 51 views
1

J'ai besoin de la toute dernière entrée valide dans une table de base de données qui serait la ligne avec la plus grande clé primaire. Donc en utilisant mysqli, ma requête est "SELECT MAX (id) FROM table LIMIT 1". Cette requête renvoie le nombre correct (en utilisant print_r()) mais je n'arrive pas à comprendre comment y accéder. Voici le code principal. Notez que le lien $ this-> fait référence à la classe avec une connexion mysqli.Comment accéder aux variables stdClass Object stdClass ([max (id)]) => 64)

$q="select max(id) from stones limit 1"; 
    $qed=$this->link->query($q) or die(mysqli_error()); 
    if($qed){ 
     $row=$qed->fetch_object(); 
     print_r($row); 
     echo $lastid=$row;//here is the problem 
    } 

La print_r de ligne valide ($ row) echos sur "stdClass Object ([max (id)] => 68)"

Répondre

5

Vous devez nommer le résultat global.

SELECT MAX(id) AS maxid FROM stones 

Ensuite, vous pouvez accéder à la valeur comme $row->maxid.

+0

Merci qui fonctionne. J'ai trouvé une solution moins propre et c'est en utilisant fetch_array() au lieu de fetch_object. Mais, je vais essayer le vôtre. – Theopile

+0

merci vous avez sauvé ma vie –

1

J'ai besoin la dernière entrée valide dans une table de base de données serait la rangée avec la plus grande clé primaire.

Vous dites que vous voulez la dernière entrée mais vous ne récupérez que l'ID. Vous avez probablement l'intention d'utiliser ceci pour récupérer la ligne entière avec une deuxième requête.

Au lieu de cela, vous pouvez faire l'opération dans une requête:

SELECT * 
FROM stones 
ORDER BY id DESC 
LIMIT 1 
+0

Merci pour la réponse, mais je ne veux que l'ID – Theopile

1

Avez-vous essayé:

$ ligne-> max (id)? ou $ lastid = $ row ["max (id)"];

Vous devrez peut-être faire un max de sélection (id) comme "MaxID" et $ lastid = $ row-> MaxID;

+0

$ row-> max (id) donne une erreur – Theopile