我正在尝试构建一个多维对象,其中包含一些从MySQL表构建的数组,我还想附加一个JSON字符串表示,但是我对逻辑有一些问题。星期二早上,我的大脑没有全力工作。
我需要以2种形式提供数据中的数据。作为普通的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;
}
我认为问题是最后的逗号,但我不知道如何摆脱它,因为我不知道表的大小或可能在其中的字段数。所以我想这真的归结为你如何从最后删除最后一个逗号?
任何帮助都会很棒,谢谢
答案 0 :(得分: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'], ",") . "]}";
答案 1 :(得分: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);