J'essaie ce qui suit
global $wpdb;
$sum = $wpdb->get_var("select sum(first), sum(second) from table where id > 1");
Je ne parviens pas à obtenir les valeurs de chaque demande. j'ai essayé
echo $test->sum(first);
J'ai essayé de changer l'instruction SQL pour inclure AS
$sum = $wpdb->get_var("select sum(first) as firstRequest, sum(second) as secondRequestfrom table where id > 1");
echo $test['firstRequest'];
J'ai essayé une déclaration foreach
foreach($test as $tester){
echo $tester['sum(first')];
}
et
foreach($test as $tester){
echo $tester['firstRequest'];
}
Comment puis-je récupérer la somme de plusieurs lignes d'une seule instruction get_var
? Si ce n'est pas possible et que j'ai besoin de la somme de 5 lignes différentes, dois-je créer 5 instructions get_var
distinctes? Est-ce que cela diminuerait la vitesse d'interrogation, si oui, est-ce même perceptible?
$wpdb->get_var
fera exactement ce que le nom suggère - renverra une valeur unique. Donc ça:
$sum = $wpdb->get_var("select sum(first), sum(second) from sums_test where id > 1");
var_dump($sum);
Retourne le résultat de sum(first)
. Le reste du résultat est perdu (bien que caché je crois).
La méthode que vous souhaitez utiliser est get_row
, qui renverra une ligne complète de résultats.
$sum = $wpdb->get_row("select sum(first) as first_sum, sum(second) as second_sum from sums_test where id > 1");
var_dump($sum);
J'ai ajouté des clauses AS
afin de faciliter l'utilisation des données en PHP. Vous pouvez maintenant obtenir vos résultats avec $sum->first_sum)
, $sum->second_sum
et ainsi de suite autant de fois que vous récupérez, ou vous pouvez utiliser quelque chose de plus dynamique, comme:
foreach ($sum as $k=>$v) {
echo $k.' -> '.$v.'<br>';
}