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,具体代码如下:

 1 <form action="json.php" method="post">
 2             <table>
 3                 <tr>
 4                     <td>id:</td>
 5                     <td>
 6                         <input type="text" name="userid">
 7                     </td>
 8                 </tr>
 9                 <tr>
10                     <td>class:</td>
11                     <td>
12                         <input type="text" name="userclass">
13                     </td>
14                 </tr>
15                 <tr>
16                     <td></td>
17                     <td>
18                         <input type="submit" value="提交">
19                     </td>
20                 </tr>
21             </table>
22         </form>

action到json.php界面,method方法是post方法。

在json.php界面中,代码如下:

 1 <?php
 2     @$id = $_POST[‘userid‘];
 3     @$class = $_POST[‘userclass‘];
 4     $array = array(
 5         ‘userid‘=>$id,
 6         ‘userclass‘=>$class,
 7     );
 8     $jsonId = json_encode($array);//将array数组变成json数据
 9     //$jsonId = addslashes($jsonId);
10     
11     echo $jsonId."<br>";
12     print_r($array);
13     
14     $dbms = "mysql";//选择数据库类型,MySQL
15     $host = "127.0.0.1"; //选择服务器
16     $userName = "";//用户名
17     $psw = "";
18     $dbName = "dbtext";//数据库名称
19     $dsn = "$dbms:host=$host;dbname=$dbName";
20     
21     try {
22         $pdo = new PDO($dsn, $userName, $psw);
23         $query = "insert into t_json(json) VALUES (:jsonId)";//sql语句
24         $request = $pdo->prepare($query);
25         $request->bindParam(‘:jsonId‘, $jsonId);
26         $res = $request->execute();//执行sql语句
27         print_r($res);
28         
29         if(!empty($res)){
30             echo "json数据添加成功!!!!";
31         }else{
32             echo "json数据添加失败!!!!";
33         }
34         
35     } catch (Exception $e) {
36         die("error!");
37     }
38 ?>

就这么简单。

第二,将数据库中的json代码解析出来,这个我在做的时候遇到了很多麻烦,其实经过查资料,发现问题很容易解决。问题就是json解析不出来,解决的办法是遍历一下就可以了。

具体的代码如下:

 1  <?php 
 2                 $dbms = "mysql";//选择数据库类型,MySQL
 3                 $host = "127.0.0.1"; //选择服务器
 4                 $userName = "";//用户名
 5                 $psw = "";
 6                 $dbName = "dbtext";//数据库名称
 7                 $dsn = "$dbms:host=$host;dbname=$dbName";
 8                 $arrjson = array();
 9                 try {
10                     $pdo = new PDO($dsn, $userName, $psw);
11                     $query = "select * from t_json";
12                     $request = $pdo->query($query);
13                     $request->execute();
14                     $res = $request->fetchAll(PDO::FETCH_ASSOC);                   
15                     for ($i=0;$i<count($res);$i++){?>
16                         <tr>
17                             <td><?php echo $res[$i][‘id‘]?></td>
18                             <td><?php $obj=json_decode($res[$i][‘json‘]);echo "编码".$obj->userid;echo " 等级".$obj->userclass ?></td>
19                         </tr>
20                 <?php }
21                    
22                 } catch (Exception $e) {
23                     die("error".$e->getMessage());
24                 }
25             ?> 

在上面的代码中的第18行就是解析json。

自php5.2开始及之后的版本都内置了json的支持,主要有两个函数:
        json_encode():编码,生成一个json字符串
        json_decode():一个解码

大家可以到下面的链接下载源码:

http://pan.baidu.com/s/1bnwHjzT

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。