Bonjour à tous,

voilà depuis le temps j'ai toujours fais la saguoin avec mes requete pdo, a faire cracher du while alors que je savais trés bien qu'il n'y avait qu'un seul résultat.
Mais le hic c'est que je suis coincé bêtement par une suite de requete PDO avec des min max et moy car je ne sais pas comment sortir le résultat proprement

$sql9 = "SELECT MAX(price) as max_bonus FROM enr_mil_pilot_op WHERE pilotid='$other_compar[pilotid]' and type='b'";
$req9 = $DBPDO ->query($sql9);
$max_bonus=???

Pourriez vous m'aider.

Désolé de vous ramenez à la maternel du php

Flo

7 réponses


Omegadela
Réponse acceptée

Hello !
Si tu comptes utiliser plusieurs fois un modèle objet des données, ou un modèle de tableau associatif tu peux définir la façon dont PDO te renvoie les données fetchées au début de ton script. Ca t'évite de taper à chaque fois fetch(PDO::FETCH_OBJ)

//A mettre au début de ton script
//Pour un tableau associatif
$DBPDO -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
//Pour un modèle objet
$DBPDO -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
//A utiliser dans ton script
    //Faire ton fetch
    $tab=$req9->fetch();
    //Pour récupérer une valeur en assoc
    $tab'max_bonus'];
    //Pour récupérer une valeur en obj
    $tab->max_bonus;

Ces sa que tu veux?

$sql9 = "SELECT MAX(price) FROM enr_mil_pilot_op WHERE pilotid='" . $other_compar[pilotid] . "' and type='b'";
    $req9 = $DBPDO->query($sql9);
    $max_bonus= $req9;
flo3376
Auteur

heu oui, ,mais il manque une étape car il me répond 1, donc qu'il y a un résultat

oui tu a raison j'ai pas trop fait gaffe, tu fait:

$sql9 = "SELECT MAX(price) FROM enr_mil_pilot_op WHERE pilotid='" . $other_compar[pilotid] . "' and type='b'";

$req9 = $DBPDO->query($sql9);

$max_bonus= $req9'price'];
flo3376
Auteur

malheureusement non

le site m'a répondu:

Fatal error: Cannot use object of type PDOStatement as array

et j'ai fait un vardump dessus et le contenu est celui-ci

object(PDOStatement)#18 (1) { "queryString"]=> string(73) "SELECT MAX(price) FROM enr_mil_pilot_op WHERE pilotid='12' and type='b'" }

bon j'ai bricolé un peu de mon coté et je sius arrivé à ceci

$sql9 = "SELECT MAX(price) as max_bonus FROM enr_mil_pilot_op WHERE pilotid='$other_compar[pilotid]' and type='b'";
                $req9 = $DBPDO ->query($sql9);
                $tab=$req9->fetch(PDO::FETCH_OBJ);
                $other_compar[max_bonus]=$tab->max_bonus;

ça marche mais il me semblais que l'on pouvait faire mieux

oui ces vrais il faut utiliser la méthode fetch pour recouper la donner, désoler :)

flo3376
Auteur

merci beaucoup