2010-05-05 57 views
31

如何將PDOStatement轉換爲json?有沒有圖書館這樣做?PDOStatement to json

編輯:我需要jsonify一個PDO::FETCH_OBJ。對不起,感謝所有的回覆。

json_encode沒有能力簡化PDO::FETCH_OBJ

謝謝。

+0

你指的是哪個'PDOStatement'? – 2010-05-05 02:34:00

回答

61

您可以使用內置的PHP函數json_encode()http://php.net/manual/en/function.json-encode.php

爲了編碼結果使用類似

<?php 
$pdo = new PDO("mysql:dbname=database;host=127.0.0.1", "user", "password"); 
$statement = $pdo->prepare("SELECT * FROM table"); 
$statement->execute(); 
$results = $statement->fetchAll(PDO::FETCH_ASSOC); 
$json = json_encode($results); 
+9

你剛剛json_encode一個PDOStatement對象? – Galen 2010-05-05 03:51:46

+1

是的,我做了哪些工作,解碼時返回一個stdClass對象。 @mediaslave你可以在PDO :: FETCH_OBJ上使用json_encode,當你運行PDO :: FETCH_OBJ它創建stdClass的對象時,這些可以被編碼成json對象,然後解碼回stdClass對象。對你的結果做一些var_dumps,看看:) – Rwky 2010-05-05 05:45:27

+1

'PDO :: FETCH_ASSOC'真的很重要,否則你會有雙重信息 – mpgn 2015-06-06 12:51:23

8

使用PDOStatement的fetchAll()方法檢索值的數組,然後將其傳遞給json_encode()

$resultJSON = json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); 
4
$array = $statement->fetchAll(PDO::FETCH_ASSOC); 
$json = json_encode($array); 
2

我還發現它非常有用的插入和設置在返回由json_encode()返回的JSON對象之前,PHP頭部('Content-Type:application/json')返回的信息:

+0

這並沒有回答這個問題,而且在解碼之前,如何設置該標題還有什麼用處?如果你可以解釋它可以在接受的答案中發表評論(甚至包括編輯)。 – 2016-08-03 17:13:51

-1

在AJAX中出現大小寫錯誤:

取而代之的是使用頭文件('Content-Type ...'在我的php文件中,我在我的JavaScript文件中使用了dataType:'JSON'。