2016-07-18 38 views
5

我使用PHP來獲取從MySQL一排,然後用下面的代碼從MySQL返回JSON與列名

$jsonData = array(); 
if(mysqli_num_rows($result) > 0){ 
while ($array = mysqli_fetch_row($result)) { 
    $jsonData[] = $array; 
} 
$json = json_encode($jsonData); 
echo stripslashes($json); 
}` 

但是其編碼爲JSON,我只得到該行的值。我需要行值和他們的列名。目前它返回以下JSON。

[["shekhar","Shekhar Chatterjee","https://graph.facebook.com/1254850974526564/picture","0"]],[["shek","Shekhar Chatterjee","","0"]] 

我想有以下輸出:

[{ 
    "user":"shekhar", 
    "name":"Shekhar Chatterjee", 
    "url":"https://graph.facebook.com/1254850974526564/picture", 
    "stat":"0" 
},{ 
    "user":"shekhar", 
    "name":"Shekhar Chatterjee", 
    "url":"https://graph.facebook.com/1254850974526564/picture", 
    "stat":"0" 
}] 
+0

是否必須在該格式或可以爲您第一行僅僅是列名的數組?如果你的第一行是列名,那麼你不重複數據,你仍然可以得到值。 – bassxzero

+9

使用'mysqli_fetch_assoc'而不是'mysqli_fetch_row' – splash58

+2

[PHP mysqli手冊](http://php.net/manual/en/book.mysqli.php)當所有其他的失敗時,你可以嘗試閱讀 – RiggsFolly

回答

4

使用mysqli_fetch_assoc()

在這裏你去

$jsonData = array(); 
if(mysqli_num_rows($result) > 0){ 
while ($array = mysqli_fetch_assoc($result)) { 
    $jsonData[] = $array; 
} 
$json = json_encode($jsonData); 
echo stripslashes($json); 
} 
+0

謝謝...它確實工作! –

4

你應該嘗試while($row = mysqli_fetch_assoc($result))

它應該返回結果與各自的字段名稱。

你可以在手冊頁here找到。

+0

謝謝...它確實工作! –

+1

我很高興我能在那裏得到一些幫助:3祝你有美好的一天。 – PockeTiger

2

您應該在此處使用mysqli_fetch_assoc,以便它返回密鑰作爲列名稱。 mysqli_fetch_row返回數字數組鍵。

試試這個:

if (mysqli_num_rows($result) > 0) { 
    $jsonData[] = mysqli_fetch_assoc($result); 
} 
$json = json_encode($jsonData, JSON_PRETTY_PRINT); 
+0

謝謝......它確實工作! –

1

只是注意,你並不需要執行額外的addslashes(),您可以添加JSON_UNESCAPED_SLASHES爲第二個參數json_encode()

echo json_encode($jsonData, JSON_UNESCAPED_SLASHES); 
+0

這並沒有真正解決這個問題,可能會更好的評論。 –

+0

同意,但是由於移動應用有限的評論功能,我無法獲得正確的代碼塊格式。 – mulquin

0

只要是其他人在2018年遇到這個問題,這裏就是完整的例子。

<?php 

header("Content-Type: application/json; charset=UTF-8"); 

$conn = new mysqli("host", "user", "password", "db_name"); 
$result = $conn->query("SELECT * FROM my_table"); 
$jsonData = array(); 
if(mysqli_num_rows($result) > 0){ 
while ($array = mysqli_fetch_assoc($result)) { 
    $jsonData[] = $array; 
} 
$json = '{"my_data":'; 
$json .= json_encode($jsonData); 
$json .= '}'; 
echo stripslashes($json); 
} 

?> 

...