【问题标题】:How to extract Json data from Mysql using php如何使用php从Mysql中提取Json数据
【发布时间】:2013-12-14 21:16:37
【问题描述】:

目前我正在使用以下代码

  <?php

// simulates result of db query for categories
$categories = array();
$categories[] = array('id' => 1, 'parent_id' => 0, 'name' => 'root');
$categories[] = array('id' => 2, 'parent_id' => 1, 'name' => 'Compact Discs');
$categories[] = array('id' => 3, 'parent_id' => 1, 'name' => 'Concert Souvenirs');

// simulates result of db query for products
$products = array();
$products[] = array('id' => 1, 'category_id' => 2, 'sku' => 'CD001', 'price'=>15.00, 'name' => 'CD: Greatest Hits');
$products[] = array('id' => 2, 'category_id' => 2, 'sku' => 'CD002', 'price'=>15.00, 'name' => 'CD: Unplugged');
$products[] = array('id' => 3, 'category_id' => 2, 'sku' => 'CD003', 'price'=>15.00, 'name' => 'CD: World Tour');
$products[] = array('id' => 4, 'category_id' => 3, 'sku' => 'PD001', 'price'=>10.00, 'name' => 'Souvenir Pin');
$products[] = array('id' => 5, 'category_id' => 3, 'sku' => 'PD002', 'price'=>10.00, 'name' => 'Mug');
$products[] = array('id' => 6, 'category_id' => 3, 'sku' => 'PD003', 'price'=>20.00, 'name' => 'Hat');
$products[] = array('id' => 7, 'category_id' => 3, 'sku' => 'PD004', 'price'=>12.00, 'name' => 'Summer Tour Poster');
$products[] = array('id' => 8, 'category_id' => 3, 'sku' => 'PD005', 'price'=>5.00,  'name' => 'Concert Program');

// create the response
$response = array('categories' => $categories, 'products' => $products);

// display the json encoded response
echo json_encode($response);

输出的json结果是这样的

{"categories":[{"id":1,"parent_id":0,"name":"root"},{"id":2,"parent_id":1,"name":"Compact Discs"},{"id":3,"parent_id":1,"name":"Concert Souvenirs"}],"products":[{"id":1,"category_id":2,"sku":"CD001","price":15,"name":"CD: Greatest Hits"},{"id":2,"category_id":2,"sku":"CD002","price":15,"name":"CD: Unplugged"},{"id":3,"category_id":2,"sku":"CD003","price":15,"name":"CD: World Tour"},{"id":4,"category_id":3,"sku":"PD001","price":10,"name":"Souvenir Pin"},{"id":5,"category_id":3,"sku":"PD002","price":10,"name":"Mug"},{"id":6,"category_id":3,"sku":"PD003","price":20,"name":"Hat"},{"id":7,"category_id":3,"sku":"PD004","price":12,"name":"Summer Tour Poster"},{"id":8,"category_id":3,"sku":"PD005","price":5,"name":"Concert Program"}]}

但是,我想要使用 Mysql 的 PHP 相同的 Json 输出。我的数据库结构是这样的,

类别

标识 | parent_id |名称 |

产品

标识 |类别 ID |货号 |价格 |名称 |

我应该如何编写我的 php 代码,以便从 Mysql 获取数据并像上面一样获取 json 结果?提前致谢。

【问题讨论】:

  • 你在说什么?

标签: php mysql json wamp


【解决方案1】:

我觉得你的方式很好

示例 sn-p

$result = Array( 'Categories' => Array(), 'Products' => Array());

$stmt = $mysqli->prepare( 'SELECT id, parent_id, name FROM category' );
$stmt->bind_result( $id, $parent_id, $name );
$stmt->execute();
while( $stmt->fetch() ) {
  $result['Categories'][] = Array( 'id' => $id, 'parent_id' => $parent_id, 'name' => $name );
} 
$stmt->close();
//Do the same for the other one

$jsonstring = json_encode( $result );

从那里你应该能够自己弄清楚

【讨论】:

    【解决方案2】:

    我想最清晰的方法是将您的 sql 结果集“转换”为您已经在使用的相同结构 - 数组。这样您就不必更改任何其他内容 - 算法的其余部分将按原样工作。 因此,只需将结果行提取到您用于模拟的相同结构数组中。

    【讨论】:

    • 你能告诉我数组结构吗?这就是我想确切知道的!
    • 如果您的 SQL 查询结果结构与您用于模拟的 100% 相同,mysql_fetch_assoc 应该可以解决问题。它将结果行作为关联数组获取,将 SQL 列名设置为数组索引。这样,如果您的查询返回一个类别的 id、parent_id 和名称,mysql_fetch_assoc 将返回一个与您之前使用的结构完全相同的数组。
    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2021-10-10
    相关资源
    最近更新 更多