如何解决MySQL数据数组传入phpChart后图表为空的问题
phpChart 图表为空问题的解决方案
你的核心问题是错误地将字符串形式的数组代码存入变量,而非构建真正的PHP多维数组。循环中你拼接的$vals是字符串(比如'array("2022-11-18",250),'),最终$chrt是包含该字符串的一维数组,而非phpChart所需的[["日期",数值], ["日期",数值], ...]结构,导致函数无法识别数据。
修正方案
- 初始化
$chrt为空数组,避免循环中被重复覆盖 - 循环内直接向
$chrt添加子数组,无需字符串拼接 - 改用关联索引访问数据库字段,避免数字索引因字段顺序变化出错
修正后的完整代码
$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
相关产品推荐
相关产品推荐

