初次尝试MySQL+php+ajax+D3.js记录

提要

  • 准备好MySQL数据
  • 用php从MySQL中读取数据
  • (JQuery)使用ajax从php读入需要的数据(json格式)
  • 调用D3.js加载数据得到直方图
  • 把代码部署到Linux服务器

准备MySQL数据

这次使用的是导入CSV数据,具体载入和处理的步骤在关于MySQL的笔记里有记录,此处略过

用Ajax调用php脚本从MySQL中读取数据

php可以直接执行MySQL语句真的是太棒了(php是世界上最好的语言-。-

在连接MySQL进行查询的php文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "test";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "MySQL查询语句"; // 固定的查询语句,字符串格式
$result = $conn->query($sql);

$css=$result->fetch_all();
echo json_encode($css); // 将查询结果以json格式返回Ajax处
$conn->close(); // 关闭连接
?>

在调用php查询文件的网页端代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 需要引用JQuery
$.ajax({
type: 'POST',
url: '/***.php', // 调用php
data:{
range:days+1 // 传输给php的数据(json格式),在php中可用 $_POST 调用
},
success: function (data) {
// data是从php处获取的返回值,此处可进行一些其他操作
var DataRaw=new Array();
var result=eval("("+data+")");
for(var i=0;i<result.length;i++){
DataRaw.push([result[i][0],result[i][1]]);
}
BarChart(DataRaw);
}
});

固定MySQL查询

1
2
// 固定的查询语句,字符串格式
$sql = "SELECT id, value FROM t2";

根据Ajax的修改的带变量的MySQL查询

1
2
3
4
// $_POST 是Ajax的提交值,用在MySQL语句里需要用{}包裹
$sql = "select * from us
order by date desc
limit 0,{$_POST['range']}";

使用 D3.js 实现数据可视化

一来可视化内容尚未全部完善,二来关键步骤已记在D3.js的笔记中,此处不展开

把代码部署到Linux服务器

前几天刚把服务器重置了,一个纯净Linux系统(CentOS 7),对于我这个新手真是太过棘手

问题一:无法解析php代码

发现服务器不能解析php代码。难怪之前老首页代码用php写的下拉菜单突然不能用了,果然换了个新镜像什么都要重新来

在终端使用下面的命令安装一下拓展就好了

1
yum install mod_php

问题二:php 无法访问 显示 :error 500

在php配置文件php.ini中修改(其实改了好像也没什么区别)

1
display_errors = On		//显示错误

为了了解详细错误,查看错误日志

找到站点的error_log,里面会有详细的错误记录,现在的目录是

1
/var/log/httpd/

发现是没有安装php-mysqli,安装一下

1
yum install php-mysqli

出现新错误!:PHP Fatal error: Call to undefined method mysqli_result::fetch_all()

几经搜索,确认安装了php-mysqlnd,可能的原因是php版本不支持该函数(v5.4),于是决定更新php版本

HOW TO UPGRADE PHP 5.4 TO PHP 7.3 ON CENTOS 7.5 (1804)

至此,终于可以正常访问到条形图了!


初次尝试MySQL+php+ajax+D3.js记录
https://jjydxfs.github.io/2020/04/03/初次尝试MySQL-php-ajax-D3-js记录/
作者
JJYDXFS
发布于
2020年4月3日
许可协议