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的插入和解析在数据库中的操作的更多相关文章

  1. 浏览器中上传Excel文件,服务器获取Excel字段。写入的数据库中。操作Excel的方式jxl和poi。

    从Excel中获取字段,官方给我们提供了方法,地址https://poi.apache.org/components/spreadsheet/quick-guide.html#CellContents ...

  2. JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里

    package com.eeepay.lzj.db; import java.sql.Connection; import java.sql.Date; import java.sql.DriverM ...

  3. map两种插入方法解析(insert() 与 下标[]操作)

    insert 含义是: 如果key存在,则插入失败,如果key不存在,就创建这个key-value. 实例: map.insert((key, value)) 利用下标操作的含义是: 如果这个key存 ...

  4. 数据库中增加操作insert into的用法和查询select的用法

    insert into的用法 1.一条insert into 可以插入多条记录 2.insert into 能判断主键是否冲突,和做出冲突处理 如果主键冲突的话会报错,还能写成如果冲突就更新的形式格式 ...

  5. mysql数据库中常用操作汇总

    一.查询数据库的基本信息: 1.    /* 查询数据库 ‘boss’ 所有表及注释 */SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema ...

  6. Oracle数据库中的blob类型解析

    Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须 ...

  7. JSP+JDBC实现在可视化页面中插入数据到SQL数据库

    原创 本篇博客创建一个如下图所示的JSP页面,将用户填入的数据插入到对应的数据库中. JSP页面代码: <%@ page language="java" contentTyp ...

  8. SQLServer数据库中开启CDC导致“事务日志空间被占满,原因为REPLICATION”的原因分析和解决办法

    本文出处:http://www.cnblogs.com/wy123/p/6646143.html SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为:在执行增删改语句(产 ...

  9. SQLServer数据库中开启CDC导致事务日志空间被占满的原因

    SQLServer数据库中开启CDC导致事务日志空间被占满的原因 转载  2017-04-01   投稿:mrr    我要评论 这篇文章主要介绍了SQLServer数据库中开启CDC导致事务日志空间 ...

随机推荐

  1. (转载)PHP源代码分析- tick(s)

    (转载)http://bbs.phpchina.com/forum.php?mod=viewthread&tid=94534 昨天有位朋友在杭州的PHPer群里面贴出了下面的一段代码并给出了运 ...

  2. ASP.NET网站发布-允许更新此预编译站点 打勾与不打勾的区别

    发布网站时在打开的对话框中,有一个选项是至关重要的,那就是“允许更新此预编译站点”: “允许更新此预编译站点”这一项,默认情况下,前面是打上一个√的,至于要不要打上一个√,是可选的,那么,打勾与不打勾 ...

  3. Bellman-Bord(贝尔曼-福特)

    include const int inf=0x3f3f3f3f; int main() { int m,n; scanf("%d%d",&n,&m); int u ...

  4. [基础] 重载的时候什么时候用引用&

    一般返回值还要继续被处理,而不仅仅是得到其值的时候,返回引用& 一般有[], =, ++, --, 还有输入输出运算符<<, >> Classtype &ope ...

  5. G - MPI Maelstrom

    题目大意: BIT最近要取会他们的超级计算机,32处理器阿波罗奥德赛与分层通信子系统分布式共享内存的机器(听着很高端大气),瓦伦丁*麦基的顾问杰克*斯威特告诉她基准测试的新系统.(没有明白什么意思) ...

  6. Android程序的入口点和全局变量设置--application

    首先看看 application的官方文档 我之前一直以为Android程序的入口点就是带MAIN和LAUNCHER的Activity的onCreate方法,看来我是错了~  原来真正的入口点是 Ap ...

  7. 关于连不上dc服务器的机器强行退出域的方法

    有时加入域的计算机无法连接到之前的域了,只能强制退出域了,有两个前提条件:   1.断开网络,就是拔掉网线或者禁用网卡.   2.使用本地管理员登陆.   然后命令行执行如下命令即可:   netdo ...

  8. Java NIO框架Netty demo

    Netty是什么 Netty是一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty 是一个基于NI ...

  9. 浅析Android中的消息机制-解决:Only the original thread that created a view hierarchy can touch its views.

    在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...

  10. linux 获取系统屏幕分辨率

      在Windows下可以使用GetSystemMetrics(SM_CXSCREEN);GetSystemMetrics(SM_CYSCREEN) 获取. 在Linux下可以使用XDisplayWi ...