Php 从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",

这里我有一个数据库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

我为什么需要这个? 因为我有很多表,对于每个表,我都需要手动创建php文件

所以我需要一些解决方案,用它来自动获取列名、行数据和创建JSON。

请仔细阅读这个方法。您还可以使用或来构建阵列

可以将获取样式作为参数传递

例如
PDO::FETCH_NAMED

$result = $query->fetchAll(PDO::FETCH_NAMED);
将使用列名称创建关联数组,这将为您节省大量代码