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 失败的常见报错和直连写法

多数人卡在第一步:连不上数据库,直接报 PDOExceptionmysqli_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.1localhost 更可靠(避免 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 cate

gory"; $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.labelsdata.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教程)