標籤:
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=InnoDBDEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ciAUTO_INCREMENT=18ROW_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";//選擇資料庫類型,MySQL15 $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
PHP json的插入和解析在資料庫中的操作