2010-05-29 67 views
0

這讓我瘋狂!下面你會發現我的PHP/MySQL的代碼,但我會在這裏發佈直接MySQL的語句:選擇和PHP MySQL的問題

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' 

當我執行的phpMyAdmin裏面這個說法我得到ot.value其關聯到「MSA」的總和。雖然,當我運行我的PHP代碼時,它不會返回值。任何人都看到了問題?

// 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

你調試過'$ start_timestamp'和'$ sales_rep_id'嗎?你可以通過'echo「Query:」。$ monthly_sales_amount_sql「顯示已完成的完整查詢作爲輸出。」
「;'? – 2010-05-29 20:24:10

+0

你實際上是否有返回的行?嘗試做一個$ row的var_dump,並注意防止PHP的mysql在列名上大寫MSA – 2010-05-29 20:24:55

+0

永遠不要假設你的PHP查詢調用成功。即使查詢實際上與您的測試版本相同,但查詢可能會失敗的原因太多。之後總是檢查'mysql_error()'。 – 2010-05-30 03:55:18

回答

0

對於像這些情況下,打印的SQL語句進行執行mysql_query命令之前:

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

提醒:Your query is susceptible to SQL Injection attacks

+0

看來,這個時期是在你編輯它之前...檢查問題的修訂2:http://stackoverflow.com/revisions/3701212f-77af-4d5e-a2de-50f186e61429/view-source – 2010-05-29 20:28:32

0

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

有一個語法錯誤$sales_rep_id之後那裏你缺少一個連接運算符。

0

您應該通過標準調試。

顯示您正試圖執行的sql字符串,以確保它確實如您所想。這是做這些事情時最常見的錯誤。

從php,語法,連接等檢查mysql錯誤