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. oracle中的exists 和not exists 用法详解(转)

    有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; ...

  2. java dump

    注意,请不要被我误导,我没有看其他资料,这是我自己分析的,有些可能是不对的 "DestroyJavaVM" prio=6 tid=0x00316800 nid=0x448 wait ...

  3. Primary key and Unique index

    SQL> create table t1(id1 char(2),id2 char(2),id3 char(2)); Table created. SQL> desc t1 Name Nu ...

  4. 【HDOJ】2319 Card Trick

    水题,STL双端队列. /* 2319 */ #include <iostream> #include <cstdio> #include <cstring> #i ...

  5. -_-#【jQuery】data

    .data() <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  6. -_-#【RequireJS】Define a Module

    define({ color: 'black', size: 'unisize' }) define(function() { // Do setup work here return { color ...

  7. 图解linux下top命令的使用

    top命令经常用来监控linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 本文通过一个运行中的 ...

  8. 使用DateAdd方法向指定日期添加一段时间间隔,使用TimeSpan对象获取时间间隔

    一:使用DateAdd方法向指定日期添加一段时间间隔,截图 二:代码 using System; using System.Collections.Generic; using System.Comp ...

  9. [转载]10 Best Tools For Websites And Apps Development Ever

    转载自: http://www.websurfmedia.com/10-best-tools-for-websites-and-apps-development-ever/   The world i ...

  10. 怎样在loop中处理异常

    怎样在loop中处理异常,而不跳出 出现符号“exception”在需要下下列之一时的解决办法; 如果sql中发生异常,我们可以用 exception       when others then d ...