php json交互,使用php 造json数据接口

做前端局限性略大,想要数据不能总等后台来实现,使用php比起来使用JAVA web 简便了很多。

0x00

配置好 php +mysql+apache环境的 电脑,建议chrome API调试插件(google Chrome 网上应用商店):apiDebug-API接口调试插件

因为和tomcat 占用了8080 区分 php的服务 是8000 端口,不是php coder,使用notepad++ ,参考一些 写了连接数据库 返回 数据json.

Apache的安装路径 ...Apache24\conf\httpd.conf中修改相关配置的,php 的DocumentRoot指向为 E:/WebRoot , Listen 改为8000

DocumentRoot "E:/WebRoot"

......//此处省略

在E:/WebRoot下新建文件夹api,作为接口路径,在api下新建两个php文件connect_config.php和getdata.php,如图:

d616c8d7d9ec

image.png

其中,connect_config.php是为了做数据库配置。使用SQLyog (或其他工具)查看本机的mysql 已有的数据库,如图,是world数据库的city表:

d616c8d7d9ec

image.png

用phpmyadmin 一样的直观

d616c8d7d9ec

image.png

当然也可以自己重新建库建表,道理是一样的。

在connect_config.php中代码:

// 服务器

define('DB_HOST', '127.0.0.1');

//端口号

define('DB_PORT', '3306');

// 用户名

define('DB_USER', 'root');

// 密码

define('DB_PWD', '000000');

// 数据库名

define('DB_NAME', 'world');

?>

数据库名要选择你要连接的数据库。

getdata.php就是主要写 方法处理,包括 连接 数据库 执行查询 json格式化数据 等。

所有代码:

require_once 'connect_config.php';

// 返回数据 的状态 消息 和数据

$status = false;

$msg = '';

$data = array();

//查询语句

$query = "select * from city limit 5";

//数据库连接

$conn = mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME,DB_PORT) or die('数据库连接失败');

$data1 = mysqli_query($conn, $query);

if ($data1){

$status = true;

$msg = '成功';

$i = 0;

while($row = mysqli_fetch_array($data1)){

$data [$i]['ID'] = $row['ID'];

$data [$i]['Name'] = $row['Name'];

$data [$i]['CountryCode'] = $row['CountryCode'];

$data [$i]['District'] = $row['District'];

$data [$i]['Population'] = $row['Population'];

$i++;

}

}else{

$status = false;

$msg = '数据查询失败';

$valuse = array(

$status,

$msg

);

}

echo json($status,$msg,$data);

//封装json 格式

function json($status, $message = '', $data = array()) {

if (! is_bool ( $status )) {

return '';

}

$result = array (

'status' => $status,

'message' => $message,

'data' => $data

);

echo json_encode ( $result,JSON_UNESCAPED_UNICODE);

}

?>

很简单,注释也写得很清楚,当然这是都不考虑其他的写法,查询world数据库表中的前5条数据,先看一下执行结果,直接在浏览器中输入 localhost:8000/api/getdata.php

d616c8d7d9ec

image.png

这样看似乎不太直观,放入apidebug插件中:

d616c8d7d9ec

image.png

初步任务完成了,这只是取到数据了但是缺少交互,

0x01.添加get请求参数

在getdata 中修改添加:

$datanum=$_GET['datanum'];

//查询语句

$query = "select * from city limit $datanum";

注意:只是做测试 没有做任何的数据校验!

测试:

直接写到url, 即把?datanum=5参数加到URL最后,多个参数用&连接。

d616c8d7d9ec

image.png

或者使用工具

d616c8d7d9ec

image.png

先选请求方式-get,在params 左侧key中添加 参数名右侧value中添加参数值。

0x02.添加post请求参数

修改一点点即可。

$datanum=$_POST['datanum'];

不添加任何参数请求试试?

d616c8d7d9ec

image.png

失败了,没有查出任何数据,使用post添加参数:先选定post方式 添加参数(注意名字一致)。

d616c8d7d9ec

image.png

0x03.分页查询

分页查询,实现分页加载怎么办?

要从sql 语法来下手

limit函数 limit关键字的用法:

LIMIT [offset,] rows

取前5条数据

select * from table_name limit 0,5

或者

select * from table_name limit 5

查询第11到第15条数据

select * from table_name limit 10,5

offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。

需要两个参数,一页的数量(偏移量),页码(计算起始值)。

可以这样写

$datanum=$_POST['datanum'];

$pagenum=$_POST['pagenum'];

$startnum=intval($datanum)*intval($pagenum);//计算起始值

//查询语句

$query = "select * from city limit $startnum,$datanum";

测试 一页7个页数是2 ,刚好结果是从第十五个。

这应该是第三页,不过目的达到了。。

d616c8d7d9ec

image.png

注意:所有数据都没有校验!!

这样子 就可以用自己造数据来访问了,使用同一局域网内手机浏览器测试下,win+X 输入 ipconfig 得到 ip地址:

d616c8d7d9ec

image.png

如图 本机ip192.168.4.146,

在手机上访问,做测试,改成直接获取:

浏览器输入192.168.4.146:8000/api/getdata.php

d616c8d7d9ec

image.png

注意:1.如果局域网 其他设备不能访问 很大程度上是因为 计算机开启了防火墙,关闭了就好。

2.访问出错,请检查 拼写中是否有空格,逗号分号引号是否用了中文符号。

然后可以愉快的自己 造数据调接口啦,至于增删改大同小异。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值