Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从数据库获取到php数组中_Php_Mysql_Sql_Arrays_Graph - Fatal编程技术网

将数据从数据库获取到php数组中

将数据从数据库获取到php数组中,php,mysql,sql,arrays,graph,Php,Mysql,Sql,Arrays,Graph,我已经犯了大约两天的错误,如果有人能帮我,我会通知你的 目标: 我想做一个查询,选择一个月内的所有付款,并将其保存在一个数组中,我想将其绘制成图表,以便我还需要没有付款的天数 这是我的代码,我想我的问题是当我试图在数组中捕获它们时。当我从主页调用我的函数时,我的所有网站都会关闭 function getDailyGraph($membership, $selectedMonth){ $sql = "SELECT rate_amount AS payment, DAY(date)

我已经犯了大约两天的错误,如果有人能帮我,我会通知你的

目标: 我想做一个查询,选择一个月内的所有付款,并将其保存在一个数组中,我想将其绘制成图表,以便我还需要没有付款的天数

这是我的代码,我想我的问题是当我试图在数组中捕获它们时。当我从主页调用我的函数时,我的所有网站都会关闭

 function getDailyGraph($membership, $selectedMonth){
       $sql = "SELECT rate_amount AS payment, DAY(date) AS day FROM payments WHERE membership_id = ".$membership.
      " AND MONTH(date) = ".$selectedMonth." ORDER BY day";
      $query = $db->query($sql);
      $days = array();
      for ($i=1; $i <= 31 ; $i++) { 
        $payment = mysql_fetch_array($query);
        # code...
        if ($i == $payment['day']) {
          # code...
          $days[] = $payment['payment'];
        }else{
          $days[] = 0;
        }
      }
        return $days;
  }
函数getDailyGraph($membership,$selectedMonth){ $sql=“选择rate_amount AS payment,DAY(date)AS DAY FROM payments,其中membership_id=“.$membership。 “和月(日)=”“$selectedMonth.“按日订购”; $query=$db->query($sql); $days=array();
对于($i=1;$i您似乎有一个无限循环;您的
$i+1
应该是
$i+=1
$i++
,因此您的循环将永远不会完成,这将导致页面永远不会完成/加载

e:我发得太快了

您的代码中也有一个逻辑错误;您正在选择日期,但无论发生什么情况,您都在递增;如果只在10、15和17日付款,那么当您的循环在1、2、3,并且它们不可能匹配时,您将拉出直径为10、15、17的三行

分别进行查询和日匹配


只要从
mysql\u fetch\u array
获得结果并存储结果数组,就可以执行一个循环;或者在另一个按天索引的数组中,然后循环该循环并检查实际可用的天数。

首先,如果您使用的是PDO,那么代码应该类似于

$sql = 'SELECT rate_amount AS payment, DAY(date) AS day FROM payments WHERE membership_id = ".$membership." AND MONTH(date) = ".$selectedMonth." ORDER BY day';
foreach ($db->query($sql) as $payment) {
    //do something with $payment['dia'], $payment['payment'], etc...     
}

如果你使用MySL**函数,你应该考虑MySqLI**,你的代码应该看起来像

$sql = 'SELECT rate_amount AS payment, DAY(date) AS day FROM payments WHERE membership_id = ".$membership." AND MONTH(date) = ".$selectedMonth." ORDER BY day';

/* connection to database */
$link = mysqli_connect("localhost", "my_user", "my_password", "my_database");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Select */
if ($result = mysqli_query($link, $sql)) {
    //work with your data here
    while($row = mysqli_fetch_array($result)){
        //do something with $payment['dia'], $payment['payment'], etc...
    }

    //free memory
    mysqli_free_result($result);
}else{
    echo "Error in query";
}

好的,谢谢,我想我的文本编辑器添加了这个。不幸的是错误仍然存在。还有其他建议吗?问题是,当我的循环在1,2,3时,我实际上希望它们不匹配(以你的例子为例)。我希望在循环结束时有一个31个数字的数组。因为当我绘制它们时,我需要31个点来绘制整个月的图表。因此,如果我的循环为1,它将在数组中保存一个0,并且我将绘制“10月1日”没有付款的图表。这样是否仍然错误?请稍候;您是否使用PDO或mysql*?因为我看到
$db->query($sql)
mysql\u fetch\u array($query)
在同一上下文中…查看错误日志。将$payment['dia']更改为$payment['day']。