【问题标题】:Input keys with values in array具有数组中值的输入键
【发布时间】:2014-06-26 15:16:59
【问题描述】:

我在填充使用数据库中的值生成键的数组时遇到问题。数据库返回 2 行,第一行应该是键,第二行是该键的值。

这是我的代码:

$days = array();

if($query=db::query("select dayname(date_earned) as dayEarned, sum(downloads) as dayDownloaded
from perf_earnings
where date_earned between DATE_SUB(curdate(), INTERVAL 7 DAY) AND curdate()
group by dayEarned"))
    {
    while($row=$q->fetch_assoc()){
       $day = $row["dayEarned"];
       $dowSum = $row["dayDownloaded"];
       $days[$day] = $dowSum;
    }
}

我得到一个空数组。

我想得到的是:

array(
[Monday]=>230,
[Tuesday]=>500,
[Wednesday]=>340,
etc.
)

嗯,和往常一样,如果你不仔细阅读,就会出现一个愚蠢的错误。当我想做 fetch_assoc 时,我没有正确输入 $query。

我写的是“$q”而不是“$query”。

还是谢谢。

【问题讨论】:

  • 先手动执行查询并检查
  • 您是否费心检查您的查询是否真的成功了?您只需假设$query 将是一个结果句柄,并且可以通过 fetch_assoc 循环运行。查询成功的方式只有 一种,失败的方式几乎无限。永远不要假设成功,因为几率实际上是无穷大的 1。始终检查失败,并将成功视为惊喜。
  • 我的查询正在运行,我在 mysql 工作台上试了一下。仅当它在 php 中不起作用时。如果它返回 false,我在 else 块中使用了 alert,但没有发生任何事情,所以我假设查询是好的。

标签: php mysql arrays


【解决方案1】:

我觉得您的查询没有得到任何结果集。
第一件事
在原始查询中 group by 需要 group by date_earned 而不是 group by dayEarned
编写上述代码的更好方法是

<?php
      $qry = "SELECT dayname(date_earned) as dayEarned, sum(downloads) as dayDownloaded
             FROM perf_earnings
             WHERE date_earned between DATE_SUB(curdate(), INTERVAL 7 DAY)
             AND curdate()
             GROUP BY date_earned";

     $qid  = mysql_query($qry);
     if($qid->num_rows()){
       while($row = mysql_fetch_array($qid)){
          $day = $row["dayEarned"];
          $dowSum = $row["dayDownloaded"];
          $days[$day] = $dowSum;

       }
     }

?>

【讨论】:

    猜你喜欢
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2021-11-15
    相关资源
    最近更新 更多