php怎么连接数据库取数做图表_phpMySQL查数据绘柱状图法【步骤】
发布时间 - 2026-01-28 00:00:00 点击率:次PHP连MySQL失败主因是服务未启、权限不足或host配置错;直连用mysqli_connect('127.0.0.1', 'root', 'pwd', 'db', 3306)更可靠;查数据须mysqli_fetch_assoc转数组再json_encode;Chart.js需fetch获取JSON并校验格式与CORS;线上500应查错误日志而非盲调。
PHP 连 MySQL 失败的常见报错和直连写法
多数人卡在第一步:连不上数据库,直接报 PDOException 或 mysqli_connect(): Connection refused。不是代码写错,而是忽略了 MySQL 服务状态、用户权限、host 配置这三块。
用 mysqli 直连最不容易绕弯子:
$conn = mysqli_connect('127.0.0.1', 'root', 'password', 'mydb', 3306);
if (!$conn) {
die('连接失败:' . mysqli_connect_error());
}
-
127.0.0.1比localhost更可靠(避免 socket 路径问题) - 端口显式写上
3306,尤其 Docker 或自定义端口时 - 确保 MySQL 用户有远程访问权限(
CREATE USER 'user'@'%' IDENTIFIED BY 'pwd'; GRANT SELECT ON mydb.* TO 'user'@'%'; FLUSH PRIVILEGES;)
查出数据后怎么转成图表能用的 JSON 格式
前端图表库(如 Chart.js)只认标准 JSON 数组,不是 PHP 数组。很多人用 json_encode($result) 直接输出,结果是空数组或报错——因为没把 MySQL 结果集真正转成 PHP 索引数组。
正确做法:
$sql = "SELECT category, SUM(amount) as total FROM sales GROUP BY category"; $result = mysqli_query($conn, $sql); $data = []; while ($row = mysqli_fetch_assoc($result)) { $data[] = $row; } echo json_encode($data);
- 必须用
mysqli_fetch_assoc(),不能用mysqli_fetch_array()(否则键名重复,JSON 里字段乱) - 如果字段含中文或特殊字符,确保数据库、连接、PHP 文件三者都是
utf8mb4编码(连接后加mysqli_set_charset($conn, 'utf8mb4');) - 别在
json_encode()前 echo 其他内容,否则 JSON 解析失败
Chart.js 柱状图怎么接 PHP 输出的 JSON
前端拿不到数据,往往不是后端没吐,而是 AJAX 请求没配对。Chart.js 本身不处理异步,得自己 fetch。
HTML 中这样写:
-
get_data.php必须只输出 JSON,不能有echo "debug";或 HTML - 注意 CORS:如果前端和 PHP 不在同一域名下,需在
get_data.php开头加header('Access-Control-Allow-Origin: *'); - Chart.js v4 要求
data.labels和data.datasets[0].data长度一致,否则柱子错位或空白
为什么本地能跑线上报 500?查错误日志比改代码快
线上环境默认关闭 PHP 错误显示,json_encode 出错、SQL 权限不足、内存超限……全变成白屏或 500。别猜,看日志。
- 查 PHP 错误日志路径:
php -i | grep 'error_log',通常在/var/log/php_errors.log或/usr/local/var/log/php/php_error.log - 临时打开错误显示(仅调试):
ini_set('display_errors', '1'); error_reporting(E_ALL);放在get_data.php开头 - MySQL 查询慢?在 SQL 前加
EXPLAIN看执行计划,重点看是否用了索引、有没有Using filesort
图表动不了,八成不是 JS 写错,而是后端 JSON 格式不对或根本没返回——先 curl 测接口:curl -v http://yoursite.com/get_data.php,看响应体和状态码。
# mysql
# php
# word
# html
# js
# 前端
# json
# ajax
# go
# docker
# npm
# 编码
# access
# sql
# echo
# select
# cURL
# mysqli
# 接口
# using
# var
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
清除minerd进程的简单方法
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
MySQL查询结果复制到新表的方法(更新、插入)
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
魔方云NAT建站如何实现端口转发?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel如何实现一对一模型关联?(Eloquent示例)
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
微信公众帐号开发教程之图文消息全攻略
独立制作一个网站多少钱,建立网站需要花多少钱?
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
Laravel如何发送系统通知?(Notification渠道示例)
如何在云主机上快速搭建网站?
Laravel怎么上传文件_Laravel图片上传及存储配置
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
Python文件异常处理策略_健壮性说明【指导】
进行网站优化必须要坚持的四大原则
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何基于云服务器快速搭建网站及云盘系统?
网站制作报价单模板图片,小松挖机官方网站报价?
Laravel distinct去重查询_Laravel Eloquent去重方法
Python面向对象测试方法_mock解析【教程】
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
WEB开发之注册页面验证码倒计时代码的实现
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何制作一个表白网站视频,关于勇敢表白的小标题?
Java垃圾回收器的方法和原理总结
如何在Tomcat中配置并部署网站项目?
js实现点击每个li节点,都弹出其文本值及修改
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Laravel如何优化应用性能?(缓存和优化命令)
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
如何挑选最适合建站的高性能VPS主机?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
JavaScript如何实现继承_有哪些常用方法
如何在腾讯云服务器上快速搭建个人网站?
node.js报错:Cannot find module 'ejs'的解决办法
如何选择PHP开源工具快速搭建网站?
Laravel如何实现多对多模型关联?(Eloquent教程)


