2015-05-30 20 views
-2

我試圖讀取我的MySQL數據並將其作爲JSON。但我只想要一個JSON對象,它會嘗試給我一個JSONArray,但該數組是空的。數組總是從一個開始,爲零

這就是它給我的,頂部是JSON,底部是簡單的數組。

[ 
    [], 
    { 
     "id": "1", 
     "description": null, 
     "copyright": "© Ian Ransley, flickr.com\/CC BY 2.0" 
    } 
] 

Array 
(
    [0] => Array 
     (
     ) 

    [1] => Array 
     (
      [id] => 1 
      [description] => 
      [copyright] => © Ian Ransley, flickr.com/CC BY 2.0 
     ) 

) 

正如你可以看到,零指數爲空出於某種原因,和右我的對象之前開始有一個開閉括號([]),這使得我的Android應用認識到,作爲一個數組代替對象。

這裏是我的PHP代碼:

<?php 
header('Content-type: text/plain'); 

$connection = mysqli_connect("localhost", "bananatime", "Yoyobanana", "bananatime") 
      or die("Error " . mysqli_error($connection)); 
if(isset($_GET['id'])){ 
    $sql = "SELECT * FROM bananas WHERE id = '".$_GET['id']."' ORDER BY id"; 
}else{ 
    $sql = "SELECT * FROM bananas ORDER BY id"; 
} 
$result = mysqli_query($connection, $sql) or die("Error in Selecting " .mysqli_error($connection)); 

$array[] = array(); 
    while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) 
    { 
     array_push($array, $row); 
    } 
array_values($array); 
echo json_encode($array, JSON_PRETTY_PRINT); 
echo "\n\n"; 
print_r($array); 

mysqli_close($connection); 
?> 
+2

如果您不發佈您的代碼,我們應該如何知道您做錯了什麼? –

+0

該死的,對不起,我會在第二秒編輯我的帖子, – TemporaryName

回答

3

變化$array[] = array();$array = array();

+0

這將有益於解釋它的區別 –

+0

原始語法既聲明'$ array'變量並同時向它附加'array()',結果在'$ array = array(array())'中。當你以後使用'array_push()'時,你會追加'$ row',導致不希望的輸出。 –

0

array_push()是問題。我不得不使用$ array = $ row;

+0

如果你有多行,沒有設置'$ _GET ['id']' –

+0

它不會失敗,它只顯示最後一個對象,這對我來說現在很好。 – TemporaryName

+0

@TemporaryName然後,如果你只顯示最後一個字段,你實際上得到的所有行沒有意義 –