PHP json的插入和解析在数据库中的操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
PHP中往数据库中存储json数据在项目开发中也经常遇到,下面我就写个往数据库中存储json的例子。
在PHP操作数据库当中,将json数据存入数据库中,还得把这个数据从数据库中解析出来。说实在的,我也不知道这个有什么作用,但是我觉得反正是技术上的东西,总是有用的。
仁者见仁,智者见智。php到现在为止学了有一个半星期吧,不足之处,往大家指正,非常的感谢。
还是先建库:在mysql下建库,代码如下:
CREATE TABLE `t_json` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`json` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=18
ROW_FORMAT=COMPACT
;
就两个字段,一个是 id,一个是json。
一、假设建一个页面,命名为input.php,具体代码如下:
<form action="json.php" method="post">
<table>
<tr>
<td>id:</td>
<td>
<input type="text" name="userid">
</td>
</tr>
<tr>
<td>class:</td>
<td>
<input type="text" name="userclass">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
action到json.php界面,method方法是post方法。
在json.php界面中,代码如下:
<?php
@$id = $_POST['userid'];
@$class = $_POST['userclass'];
$array = array(
'userid'=>$id,
'userclass'=>$class,
);
$jsonId = json_encode($array);//将array数组变成json数据
//$jsonId = addslashes($jsonId); echo $jsonId."<br>";
print_r($array); $dbms = "mysql";//选择数据库类型,MySQL
$host = "127.0.0.1"; //选择服务器
$userName = "";//用户名
$psw = "";
$dbName = "dbtext";//数据库名称
$dsn = "$dbms:host=$host;dbname=$dbName"; try {
$pdo = new PDO($dsn, $userName, $psw);
$query = "insert into t_json(json) VALUES (:jsonId)";//sql语句
$request = $pdo->prepare($query);
$request->bindParam(':jsonId', $jsonId);
$res = $request->execute();//执行sql语句
print_r($res); if(!empty($res)){
echo "json数据添加成功!!!!";
}else{
echo "json数据添加失败!!!!";
} } catch (Exception $e) {
die("error!");
}
?>
就这么简单。
第二,将数据库中的json代码解析出来,这个我在做的时候遇到了很多麻烦,其实经过查资料,发现问题很容易解决。问题就是json解析不出来,解决的办法是遍历一下就可以了。
具体的代码如下:
<?php
$dbms = "mysql";//选择数据库类型,MySQL
$host = "127.0.0.1"; //选择服务器
$userName = "";//用户名
$psw = "";
$dbName = "dbtext";//数据库名称
$dsn = "$dbms:host=$host;dbname=$dbName";
$arrjson = array();
try {
$pdo = new PDO($dsn, $userName, $psw);
$query = "select * from t_json";
$request = $pdo->query($query);
$request->execute();
$res = $request->fetchAll(PDO::FETCH_ASSOC);
for ($i=0;$i<count($res);$i++){?>
<tr>
<td><?php echo $res[$i]['id']?></td>
<td><?php $obj=json_decode($res[$i]['json']);echo "编码".$obj->userid;echo " 等级".$obj->userclass ?></td>
</tr>
<?php } } catch (Exception $e) {
die("error".$e->getMessage());
}
?>
在上面的代码中的第18行就是解析json。
自php5.2开始及之后的版本都内置了json的支持,主要有两个函数:
json_encode():编码,生成一个json字符串
json_decode():一个解码
大家可以到下面的链接下载源码:
http://pan.baidu.com/s/1bnwHjzT
PHP json的插入和解析在数据库中的操作的更多相关文章
- 浏览器中上传Excel文件,服务器获取Excel字段。写入的数据库中。操作Excel的方式jxl和poi。
从Excel中获取字段,官方给我们提供了方法,地址https://poi.apache.org/components/spreadsheet/quick-guide.html#CellContents ...
- JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里
package com.eeepay.lzj.db; import java.sql.Connection; import java.sql.Date; import java.sql.DriverM ...
- map两种插入方法解析(insert() 与 下标[]操作)
insert 含义是: 如果key存在,则插入失败,如果key不存在,就创建这个key-value. 实例: map.insert((key, value)) 利用下标操作的含义是: 如果这个key存 ...
- 数据库中增加操作insert into的用法和查询select的用法
insert into的用法 1.一条insert into 可以插入多条记录 2.insert into 能判断主键是否冲突,和做出冲突处理 如果主键冲突的话会报错,还能写成如果冲突就更新的形式格式 ...
- mysql数据库中常用操作汇总
一.查询数据库的基本信息: 1. /* 查询数据库 ‘boss’ 所有表及注释 */SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema ...
- Oracle数据库中的blob类型解析
Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须 ...
- JSP+JDBC实现在可视化页面中插入数据到SQL数据库
原创 本篇博客创建一个如下图所示的JSP页面,将用户填入的数据插入到对应的数据库中. JSP页面代码: <%@ page language="java" contentTyp ...
- SQLServer数据库中开启CDC导致“事务日志空间被占满,原因为REPLICATION”的原因分析和解决办法
本文出处:http://www.cnblogs.com/wy123/p/6646143.html SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为:在执行增删改语句(产 ...
- SQLServer数据库中开启CDC导致事务日志空间被占满的原因
SQLServer数据库中开启CDC导致事务日志空间被占满的原因 转载 2017-04-01 投稿:mrr 我要评论 这篇文章主要介绍了SQLServer数据库中开启CDC导致事务日志空间 ...
随机推荐
- 如何给Qlabel添加clicked属性(覆盖mousePressEvent,处理QMouseEvent消息,反正是软绘制,想怎么样就怎么样)
clickedLabel.h #ifndef CLICKLABEL_H #define CLICKLABEL_H #include <QLabel> #include <QMouse ...
- Winform 隐藏程序窗口
internal class HideOnStartupApplicationContext : ApplicationContext { private Form mainFormInternal; ...
- 「Poetize4」上帝造题的七分钟2
描述 Description "第一分钟,X说,要有数列,于是便给定了一个正整数数列.第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作.第三分钟,k说,要能查询, ...
- BZOJ1044: [HAOI2008]木棍分割
1044: [HAOI2008]木棍分割 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1580 Solved: 567[Submit][Statu ...
- Linux Shell编程(5)——shell特殊字符(下)
{}代码块[花括号]. 这个结构也是一组命令代码块,事实上,它是匿名的函数.然而与一个函数所不同的,在代码块里的变量仍然能被脚本后面的代码访问. bash$ { local a; a=123 ...
- 嵌入式设备web服务器比较
目录(?)[-] Boa Thttpd Mini_httpd Shttpd Lighttpd Goahead AppWeb Apache 开发语言和开发工具 结论 备注 现在在嵌入式设备中所使用的 ...
- IOI 2009:Mecho
IOI2009 Mecho Time Limit: 10000ms Memory Limit: 262144KB This problem will be judged on SPOJ. Origin ...
- 【模拟】Codeforces 705B Spider Man
题目链接: http://codeforces.com/problemset/problem/705/B 题目大意: 两个人玩游戏,总共N个数,分别求前I(I=1 2 3...n)个数时游戏的获胜者是 ...
- Delphi stdCall意义
Delphi stdCall意义 1.此代码所在单元是个库,可被别的应用来调用,像SysUtils.DateUtils.Classes等单元一样,都是为将来的无穷无尽的应用提供服务的.2.此代码还可能 ...
- 从JavaScript的移位运算看数字在计算机内部的编码——补码
偶然看到一个JavaScript的题目: js中13>>2=? -13>>2=? 在浏览器中很容易测试出答案分别是 3 和 -4. 13>>2 = 3 很 ...