2016-08-04 59 views
0

返回我有以下PHP從DB和地方每一行收集數據到一個數組它然後在最後的陣列,其被返回給JavaScript地方:PHP數組空時不參照索引

$active = /*some SQL statement*/ 
$result = mysqli_query($GLOBALS['con'], $active); 

$data = array(); 

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){ 

    $value = array( 
     "id"=>$row["quest"], 
     "received"=>$row["received"] 
    ); 

    array_push($data, $value); 
} 

return json_encode($data); 

我知道SQL語句正在工作,並且$value具有值,但返回到JavaScript頁面的數組始終是空字符串,而不是JSON對象。

如果我把我的while循環中我return語句,然後將數據返回:

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){ 

    $value = array( 
     "id"=>$row["quest"], 
     "received"=>$row["received"] 
    ); 

    array_push($data, $value); 
    return json_encode($data); 

} 

但很明顯,我想這樣不返回數據,循環完成後。

如果我改變我的return語句:

return json_encode($data[1]); 

然後數據也被返回。

請幫我找出這一個。

+0

這是一個功能?如果不使用'echo'而不是'return' – RiggsFolly

+0

這是一個函數 – ALR

+0

將這個代碼添加到您提供的代碼中 – RiggsFolly

回答

0

下面改變代碼

$active = /*some SQL statement*/ 
$result = mysqli_query($GLOBALS['con'], $active); 

$data = array(); 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    $value = array( 
     "id"=>$row["quest"], 
     "received"=>$row["received"] 
    ); 
    $data[]=$value; // this is trick 
} 

return json_encode($data); 
+1

MYSQLI_ASSOC而不是MYSQL_ASSOC – RiggsFolly

+0

ahh是的,謝謝@RiggsFolly –

+0

這只是返回一個空數組,像這樣: '[]' – ALR

0

試試這個:

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){ 

$value = array( 
    "id"=>$row["quest"], 
    "received"=>$row["received"] 
); 

array_push($data, $value); 

} 

return json_encode($data); 
+0

MYSQLI_ASSOC而不是MYSQL_ASSOC – RiggsFolly

+0

沒有,仍然會返回一個空字符串 – ALR

+0

的print_r($值); array_push($ data,$ value);檢查$值是否爲空 –