zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Oracle使用手册<收藏>
    Oracle 连接串方式
    通过多线程为基于 .NET 的应用程序实现响应迅速的用户
    PL/SQL三种集合类型的比较<收藏>
    关于Application.DoEvents() 避免假死<收藏>
    Inserting/Retrieving CLOB/NCLOB Data
    从procedure返回結果集<收藏>
    oracle ReadBlobs
    使用Update...returning...into为什么会出现ORA01036,ORA24369错误 <收藏>
    DevExpress document 地址
  • 原文地址:https://www.cnblogs.com/invban/p/4548334.html
Copyright © 2011-2022 走看看