【问题标题】:Fetch column name and rows data from mysql and create json从mysql获取列名和行数据并创建json
【发布时间】:2014-04-13 21:01:11
【问题描述】:

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

【问题讨论】:

    标签: php mysql sql json pdo


    【解决方案1】:

    请阅读PDOStatement.fetchAll 方法。您也可以使用fetchfetchAll 来构建您的数组。

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

    例如PDO::FETCH_NAMED:

    $result = $query->fetchAll(PDO::FETCH_NAMED);
    

    将使用列名创建关联数组,这将为您节省大量代码。

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-22
      相关资源
      最近更新 更多