Php 使用数组中的值输入键

Php 使用数组中的值输入键,php,mysql,arrays,Php,Mysql,Arrays,我无法用数据库中的值填充生成键的数组。数据库返回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

我无法用数据库中的值填充生成键的数组。数据库返回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.
)
嗯,和往常一样,有一个愚蠢的错误,你没有仔细阅读。我没有正确输入$query,而我想做的是fetch_assoc

我写了“$q”而不是“$query”


无论如何,谢谢。

我觉得您的查询没有得到任何结果集。
第一件事
在原始查询中,“分组依据”需要是“按日期分组”,而不是“按日期分组”
编写上述代码的更好方法是

<?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;

       }
     }

?>


首先手动执行查询并检查您是否费心检查您的查询是否确实成功?您只需假设
$query
将是一个结果句柄,可以通过fetch\u assoc循环运行。查询成功的方法只有一种,而失败的方法几乎是无限的。永远不要假设成功,因为成功的几率是无穷大的1。总是检查失败,并将成功视为惊喜。我的查询正在运行,我在mysql工作台上尝试过。除非它在php中不起作用。我在else块中使用了alert,如果它返回false,则不会发生任何情况,所以我假设查询是正确的。