【问题标题】:Converting a mysql query to a JSON object using php?使用 php 将 mysql 查询转换为 JSON 对象?
【发布时间】:2012-04-06 15:05:06
【问题描述】:

我正在尝试将 mySQL 查询转换为 JSON 对象。这有效:

<?php
// load in mysql server configuration (connection string, user/pw, etc)
include 'mysqlConfig.php';
$year = $_GET['year'];
// connect to the database
@mysql_select_db($dsn) or die( "Unable to select database");

// outputs the db as lines of text.
$result = mysql_query("SELECT COUNTY, COUNT(TYPE) AS 'type'  from data WHERE DATE between '2000-01-01' and '2000-12-31' GROUP BY COUNTY");
$rows = array();

while($r = mysql_fetch_assoc($result)) {
     $rows[] = $r;
}

echo json_encode($rows);
mysql_close();

?>

但是我得到了这个输出:

[{"COUNTY":"Carlow","type":"121"},{"COUNTY":"Cavan","type":"130"},{"COUNTY":"Clare","type":"112"},{"COUNTY":"Cork","type":"833"},{"COUNTY":"Donegal","type":"264"},{"COUNTY":"Dublin","type":"2457"},{"COUNTY":"Galway","type":"287"},{"COUNTY":"Kerry","type":"227"},{"COUNTY":"Kildare","type":"300"},{"COUNTY":"Kilkenny","type":"139"},{"COUNTY":"Laois","type":"123"},{"COUNTY":"Leitrim","type":"39"},{"COUNTY":"Limerick","type":"370"},{"COUNTY":"Longford","type":"85"},{"COUNTY":"Louth","type":"257"},{"COUNTY":"Mayo","type":"231"},{"COUNTY":"Meath","type":"268"},{"COUNTY":"Monaghan","type":"136"},{"COUNTY":"Offaly","type":"97"},{"COUNTY":"Roscommon","type":"115"},{"COUNTY":"Sligo","type":"113"},{"COUNTY":"Tipperary","type":"249"},{"COUNTY":"Waterford","type":"205"},{"COUNTY":"Westmeath","type":"118"},{"COUNTY":"Wexford","type":"246"},{"COUNTY":"Wicklow","type":"235"}]

而这是我正在寻找的格式:

{"Carlow":3,"Cavan":4,"Clare":5,"Cork":3,"Donegal":4,"Dublin":5,"Galway":4,"Kerry":5,"Kildare":5,"Kilkenny":12,"Laois":4,"Leitrim":4,"Limerick":4,"Longford":4,"Louth":4,"Mayo":5,"Meath":3,"Monaghan":5,"Offaly":4,"Roscommon":3,"Sligo":3,"Tipperary":4,"Waterford":2,"Westmeath":2,"Wexford":4,"Wicklow":2}

有什么想法吗?

【问题讨论】:

  • 请详细说明。 3,4,5代表什么??

标签: php mysql json


【解决方案1】:

应该是:

while($r = mysql_fetch_assoc($result)) {
     $rows[$r['COUNTRY']] = $r['type'];
}

【讨论】:

  • 我猜 eoin 不打算接受 $r['type']。可能是他想添加3,4,5等。不是 121,130 等(即类型),如果我没记错的话。
  • 嘿,太棒了,谢谢一百万。还有一件事,无论如何可以轻松地将值转换为整数,即去掉值周围的双引号。我正在使用这个脚本将 sql 值传递到基于 javascript 的 d3 框架中。
  • @eoin 只需使用类型转换(int)$r['type'];
  • 感谢 xdazz,我实际上是用 intval($r['type']) 得到的。我已经转了几个小时了。非常感谢。
【解决方案2】:
while($r = mysql_fetch_assoc($result)) {
 $rows[] = $r;
}

应该是

while($r = mysql_fetch_assoc($result)) {
 $rows[] = array($r['COUNTY'], $r['type']);
}

【讨论】:

  • 这让我更接近了,但不是我需要的:[["Carlow","121"],["Cavan","130"],["Clare","112"] ,["Cork","833"],["Donegal","264"],["Dublin","2457"],["Galway","287"],["Kerry","227"] ,["Kildare","300"],["Kilkenny","139"],["Laois","123"],["Leitrim","39"],["Limerick","370"] ,["朗福德","85"],["劳斯","257"],["梅奥","231"],["米斯","268"],["莫纳汉","136"] ,["Offaly","97"],["Roscommon","115"],["Sligo","113"],["Tipperary","249"],["Waterford","205"] ,["Westmeath","118"],["Wexford","246"],["Wicklow","235"]]
  • 是否有可能摆脱方括号,将所有内容都放在一对大括号之间,并且在县周围使用双引号而不是值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多