You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决MySQL数据数组传入phpChart后图表为空的问题

phpChart 图表为空问题的解决方案

你的核心问题是错误地将字符串形式的数组代码存入变量,而非构建真正的PHP多维数组。循环中你拼接的$vals是字符串(比如'array("2022-11-18",250),'),最终$chrt是包含该字符串的一维数组,而非phpChart所需的[["日期",数值], ["日期",数值], ...]结构,导致函数无法识别数据。

修正方案

  1. 初始化$chrt为空数组,避免循环中被重复覆盖
  2. 循环内直接向$chrt添加子数组,无需字符串拼接
  3. 改用关联索引访问数据库字段,避免数字索引因字段顺序变化出错

修正后的完整代码

$db = mysqli_select_db($connection, "stockreport") or die("Error " . mysqli_error());
$item = $_GET["item"];
// 初始化空数组存储图表数据
$chrt = [];

// 只查询需要的字段,提升性能
$sql = mysqli_query($connection, "SELECT impdate, stock FROM import2 where itemcode=$item");

while($row = mysqli_fetch_array($sql)) {
    // 处理日期格式
    $timestamp = strtotime($row['impdate']);
    $formattedDate = date('Y-m-d', $timestamp);   
    // 直接添加子数组到$chrt,强制转换数值类型确保正确性
    $chrt[] = [$formattedDate, (int)$row['stock']];
}

// 传入正确的多维数组到phpChart
$pc = new C_PhpChartX([$chrt], 'chart1');
// 记得调用渲染方法
// $pc->draw();

补充说明

  • 原代码每次循环都会覆盖$chrt,最终仅保留最后一条数据的字符串形式,而非所有数据集合
  • 强制转换$row['stock']为整数,避免字符串类型导致图表识别异常
  • SQL查询建议只选择所需字段(impdate和stock),而非*,避免字段索引混乱

内容的提问来源于stack exchange,提问作者Fabiano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:55:21