2010-05-29 34 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错误