2010-05-29 8 views
0

Cela me rend fou! Ci-dessous vous trouverez mon PHP/code de MySQL, mais je vais poster la déclaration mySQL directe ici:SELECT SUM PHP MySQL problème

SELECT SUM(ot.value) AS msa 
    FROM orders o 
LEFT JOIN orders_total ot ON ot.orders_id = o.orders_id 
    WHERE ot.class = 'ot_total' 
     AND UNIX_TIMESTAMP(o.date_purchased) >=1262332800 
     AND UNIX_TIMESTAMP(o.date_purchased) <=1264924800 
     AND o.sales_rep_id = '2' 

Lorsque j'exécute cette instruction à l'intérieur de phpMyAdmin je reçois la somme pour ot.value qui est associée à « msa ». Bien que, quand je cours mon code php, il ne renvoie pas de valeur. Quelqu'un voit le problème?

// works in phpMyAdmin but not displaying during PHP execution! 
$monthly_sales_amount_sql = "SELECT SUM(ot.value) AS msa 
           FROM orders o 
          LEFT JOIN orders_total ot ON ot.orders_id = o.orders_id 
           WHERE ot.class = 'ot_total' 
           AND UNIX_TIMESTAMP(o.date_purchased) >= $start_timestamp 
           AND UNIX_TIMESTAMP(o.date_purchased) <= $end_timestamp 
           AND o.sales_rep_id = '" . $sales_rep_id . "'";          

$result = mysql_query($monthly_sales_amount_sql); 
$row = mysql_fetch_assoc($result); 

echo "MSA: " . $row['msa'] . "<BR><BR>"; 
+0

Avez-vous débogué 'start_timestamp' et $' sales_rep_id' de $? Pouvez-vous montrer la requête complète et terminée en sortie par 'echo" Query: ". $ Monthly_sales_amount_sql."
";'? –

+0

Des lignes sont-elles renvoyées? Essayez de faire un var_dump de $ row, et faites attention au cas où le mysql de PHP est en utilisant le nom de la colonne MSA –

+0

NE JAMAIS supposer que vos appels de requête PHP réussissent. Même si la requête est en fait identique à votre version de test, il y a beaucoup trop d'autres raisons pour lesquelles une requête pourrait échouer. TOUJOURS vérifier 'mysql_error()' après. –

Répondre

0

Pour des situations comme celles-ci, imprimez l'instruction SQL juste avant la commande est exécutée mysql_query:

print($monthly_sales_amount_sql) 
$result = mysql_query($monthly_sales_amount_sql); 

Rappel: Your query is susceptible to SQL Injection attacks.

+0

Il semble que la période était là avant que vous l'éditiez ... vérifier la révision 2 de la question: http://stackoverflow.com/revisions/3701212f-77af-4d5e-a2de-50f186e61429/view-source –

0

AND o.sales_rep_id = '" . $sales_rep_id "'";

Il y a une erreur de syntaxe il juste après $sales_rep_id que vous manque un opérateur de concaténation.

0

Vous devriez passer par le débogage standard.

Afficher la chaîne sql que vous tentez d'exécuter pour vous assurer qu'elle correspond bien à ce que vous pensez. C'est l'erreur la plus commune en faisant ces choses.

Vérifiez les erreurs de mysql de php, la syntaxe, la connexion, etc.