Php 使用数组中的值输入键
我无法用数据库中的值填充生成键的数组。数据库返回2行,第一行应该是键,第二行是该键的值 这是我的代码: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
$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,则不会发生任何情况,所以我假设查询是正确的。