【问题标题】:PHP&MySQL: issue using php for and mysql queryPHP&MySQL:使用 php for 和 mysql 查询的问题
【发布时间】:2012-12-05 20:52:14
【问题描述】:

我会使用 12 个不同的函数计算每个月数据库的总利润 [每个月一个(是的,它可能不是一个很好的解决方案,但我正在逐步学习)]

这是 .php 代码(x12 次)

$January="SELECT JanuaryProfit()";     //Function
echo "<b>January Profit: E</b>";
$January = mysql_query($giugno,$conn)
          or die("Query failed: " . mysql_error($conn));
$num_rows=mysql_num_rows($January);

if (! $num_rows)
      echo "<p>0</p>";
else {
      while ($row = mysql_fetch_row($January)) {
            $price=$row[0];
            echo "$price";
      };
}

函数 JanuaryProfit() 以这种方式声明 [MySQL]:

BEGIN
DECLARE PriceTOT FLOAT;
SELECT SUM(o.PrezzoTot) INTO PriceTOT
FROM orders o
WHERE o.Data BETWEEN '2012-01-01' AND '2012-01-31';
RETURN PriceTOT;
END

所以我单独宣布了 2 月、3 月、...、12 月。

我不会将第一个代码粘贴到 .php 页面中的 12 次。我尝试使用每次使用不同功能的 for cicle,但我不知道如何正确解决这个问题。有什么建议吗?

我现在想做的只是改变 php 部分,使用循环。

【问题讨论】:

  • 澄清你在mysql中有一个过程MarchProfit()和AprilProfit()等?
  • 是的,每个月一个功能
  • 这不仅效率低下,而且是自虐。这是每个月,每年的新功能。这是the LASTDAY() function,这可能是你的绊脚石。

标签: php mysql for-loop


【解决方案1】:

天啊,亲爱的,会飞的意大利面怪物。停止你正在做的任何事情,然后烧掉它,然后使用类似下面的东西来避免从开始到结束每年的每个月编写一个函数。

SELECT 
  YEAR(o.Data) as 'year',
  MONTH(o.Data) as 'month',
  SUM(o.PrezzoTot) as 'total'
FROM orders o
GROUP BY YEAR(o.Data), MONTH(o.Data)

我假设您在某些时候难以以编程方式确定该月的最后一天,所以这里有另一个指向 LASTDAY() 的链接,它也是所有非常有用日期的文档页面功能。


编辑

define('masochism', TRUE);

$ohgodwhy = array('January','February','March','April','May','June','July','August','September','October','November','December');

$aaahhh = 'SELECT %sProfit()';

foreach( $ohgodwhy as $pleaseno ) {
    $itburns = sprintf($aaahhh, $pleaseno);
    $hidethebodies = mysql_query($itburns) or die("Couldn't hide the bodies because: " . mysql_error());
    // etc...
}

【讨论】:

  • 我同意您的解决方案,但他确实指定他只想更改 php 文件。 (我仍然 +1 你的回答)
  • @NappingRabbit 我已经用一些有史以来最好的代码更新了我的答案。
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多