2013-02-05 87 views
1

我想構建一個由一些MySQL數據庫構建的數組構成的多維對象,我也想附上一個JSON字符串表示形式,但是我遇到了一些問題邏輯。這是星期二上午,我的大腦並沒有全力發揮作用。用PHP手動創建JSON字符串

我需要從兩種形式的數據中獲取數據。作爲一個正常的PHP數組和JSON字符串,但是我的JSON字符串是無效的,我找不到一個更好的方法來做到這一點。也許有人在那裏有一個很好的解決方案。

這是我迄今爲止所做的。

function buildFields(){ 
     $db = new DB_Connection(); //connect to db 
     $sql ="SHOW FULL COLUMNS FROM contact_form"; //get table info 
     $result = $db->query($sql,"website"); 
     if (!$result) return "ERROR:".$db->getError(); 
     $data['json_string'] = "{\"fields\":["; //open Json string 
     while($row = $result->getNext()){ 
      $data['fields'] []= $row['Field']; // add field name 
      $data['comments'] []= $row['Comment']; // add field comment 
      $data['json_string'] .= "\"".$row['Field']."\",".$row['Comment'].","; //build JSON string 
     } 
     $data['json_string'] .= "]}"; 
     return $data; 
    } 

我認爲這個問題是在結束最後一個逗號,但我不知道如何擺脫它,因爲我不知道該表的大小,或可在字段數它。所以我想這真的歸結爲你如何從最後刪除最後一個逗號?

任何幫助將是巨大的,謝謝

+14

有沒有使用json_encode理由嗎? http://www.php.net/json_encode – DrBeza

+4

不要重新實現核心功能。 – leftclickben

+1

沒有有效的技術理由不使用'json_encode' –

回答

1

$row['Comment']沒有加引號。另外你需要修剪最後的,

$data['json_string'] = "{\"fields\":["; //open Json string 
while($row = $result->getNext()){ 
    //... 
    $data['json_string'] .= "\"".$row['Field']."\",\"".$row['Comment']."\","; //build JSON string 
} 
$data['json_string'] = rtrim($data['json_string'], ",") . "]}"; 
+0

真棒:)我覺得它是這樣的 – TheSnooker

1

你可以嘗試

$stringJSON['fields'] = array(); 
    while($row = $result->getNext()){ 
     //your other code here 
     $stringJSON['fields'] = $row['Field']; 
     $stringJSON['fields'] = $row['Comment']; 
    } 
    $data['json_string'] = json_encode($stringJSON);