Php 从mysql获取列名和行数据并创建json
这里我有一个数据库mysql: 我需要制作一个json文件,格式如下:Php 从mysql获取列名和行数据并创建json,php,mysql,sql,json,pdo,Php,Mysql,Sql,Json,Pdo,这里我有一个数据库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",
{"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
我为什么需要这个?
因为我有很多表,对于每个表,我都需要手动创建php文件
所以我需要一些解决方案,用它来自动获取列名、行数据和创建JSON。请仔细阅读这个方法。您还可以使用或来构建阵列
可以将获取样式作为参数传递
例如PDO::FETCH_NAMED
:
$result = $query->fetchAll(PDO::FETCH_NAMED);
将使用列名称创建关联数组,这将为您节省大量代码