PHP json的插入和解析在資料庫中的操作

木子小僧發表於2015-06-03

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

相關文章