这里我有一个数据库mysql:
我需要以这种格式制作一个json文件:
{"cols":[{"label":"ID","type":"number"},{"label":"Naziv","type":"string"},{"label":"Povrsina","type":"number"},{"label":"Lokacija","type":"string"},{"label":"Arkod ID","type":"number"},{"label":"Osnov koriscenja","type":"string"},{"label":"Kultura","type":"string"},{"label":"Naziv","type":"string"},{"label":"Navodnjavanje","type":"string"}],"rows":[{"c":[{"v":1},{"v":"Vinograd"},{"v":230457},{"v":"dole"},{"v":57875},{"v":"zakup zemlje"},{"v":"vocnjak"},{"v":"Vinograd"},{"v":"DA"}]},{"c":[{"v":2},{"v":"Njiva 3"},{"v":33445},{"v":"selo"},{"v":4564},{"v":"vlasnistvo"},{"v":"njiva"},{"v":"Njiva 3"},{"v":"da"}]},{"c":[{"v":3},{"v":"Vocnjak N"},{"v":230457},{"v":"iznad brdo"},{"v":57875},{"v":"zakup zemlje"},{"v":"vocnjak"},{"v":"Vocnjak N"},{"v":"da"}]},{"c":[{"v":4},{"v":"Njiva Dek"},{"v":33445},{"v":"selo"},{"v":4564},{"v":"vlasnistvo"},{"v":"njiva"},{"v":"Njiva Dek"},{"v":"da"}]}]}
我需要这种格式,因为我使用谷歌可视化API的数据。
现在我这样做是为了使用这段代码:
try {
$conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result = $conn->query('SELECT * FROM zemljiste');
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'ID', 'type' => 'number'),
array('label' => 'Naziv', 'type' => 'string'),
array('label' => 'Povrsina', 'type' => 'number'),
array('label' => 'Lokacija', 'type' => 'string'),
array('label' => 'Arkod ID', 'type' => 'number'),
array('label' => 'Osnov koriscenja', 'type' => 'string'),
array('label' => 'Kultura', 'type' => 'string'),
array('label' => 'Naziv', 'type' => 'string'),
array('label' => 'Navodnjavanje', 'type' => 'string')
);
foreach($result as $r) {
$temp = array();
$temp[] = array('v' => (int) $r['ID']);
$temp[] = array('v' => (string) $r['naziv']);
$ha = (int)$r['ha'];
$ar = (int)$r['ar'];
$m2 = (int)$r['m2'];
$povrsina = $ha*10000+$ar*100+$m2;
$temp[] = array('v' => (int) $povrsina);
$temp[] = array('v' => (string) $r['lokacija']);
$temp[] = array('v' => (int) $r['arkod']);
$temp[] = array('v' => (string) $r['osnov']);
$temp[] = array('v' => (string) $r['kat_kul']);
$temp[] = array('v' => (string) $r['naziv']);
$temp[] = array('v' => (string) $r['navodnjavanje']);
$rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
// convert data into JSON format
$jsonTable = json_encode($table);
//echo $jsonTable;
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
echo $jsonTable;
但是可以自动获取列名,然后获取行数据,然后以我上面提到的格式创建JSON吗?
为什么我需要这个? Becouse我有很多表,我需要为每个表创建manualy创建php文件...
所以我需要一些解决方案,并获得自动列名,行数据和创建JSON。
答案 0 :(得分:3)
请阅读PDOStatement.fetchAll
方法。您还可以使用fetch
或fetchAll
来构建数组。
您可以将获取样式作为参数传递。
例如PDO::FETCH_NAMED
:
$result = $query->fetchAll(PDO::FETCH_NAMED);
将使用列名创建关联数组,这将为您节省大量代码。