如何从 mysql 数据库构建 JSON 数组
Posted
技术标签:
【中文标题】如何从 mysql 数据库构建 JSON 数组【英文标题】:How to build a JSON array from mysql database 【发布时间】:2011-09-11 00:53:39 【问题描述】:好的,我一直在绞尽脑汁尝试从 mysql 构建 JSON 数组。数组必须采用以下格式。我正在使用 fullcalendar 并希望使日历上的事件动态化。下面是构建数组的代码,但是目前没有从mysql获取信息
$year = date('Y');
$month = date('m');
echo json_encode(array(
//Each array below must be pulled from database
//1st record
array(
'id' => 111,
'title' => "Event1",
'start' => "$year-$month-10",
'url' => "http://yahoo.com/"
),
//2nd record
array(
'id' => 222,
'title' => "Event2",
'start' => "$year-$month-20",
'end' => "$year-$month-22",
'url' => "http://yahoo.com/"
)
));
【问题讨论】:
【参考方案1】:你想做这样的事情吗?
$return_arr = array();
$fetch = mysql_query("SELECT * FROM table");
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC))
$row_array['id'] = $row['id'];
$row_array['col1'] = $row['col1'];
$row_array['col2'] = $row['col2'];
array_push($return_arr,$row_array);
echo json_encode($return_arr);
它以这种格式返回一个json字符串:
["id":"1","col1":"col1_value","col2":"col2_value","id":"2","col1":"col1_value","col2":"col2_value"]
或者是这样的:
$year = date('Y');
$month = date('m');
$json_array = array(
//Each array below must be pulled from database
//1st record
array(
'id' => 111,
'title' => "Event1",
'start' => "$year-$month-10",
'url' => "http://yahoo.com/"
),
//2nd record
array(
'id' => 222,
'title' => "Event2",
'start' => "$year-$month-20",
'end' => "$year-$month-22",
'url' => "http://yahoo.com/"
)
);
echo json_encode($json_array);
【讨论】:
+1 击败了我。如果所有数据库列都是正确的名称,您应该能够删除分配并将 $row 推送到数组。 你为什么要创建$row_array
?为什么不SELECT id, title, '$year-month-10' as start,url FROM table
,直接$return_arr[] = $row;
?
@Kevin,是的,你是对的。我实际上很快从一个自动完成示例中提取了这个,我必须为数组值分配不同的名称。所以 +1 就在你身边!
是的,一个人在写一个时没有收到另一个评论待处理的警报:)
我还是没明白。数组必须完全如上所示,否则信息不会显示在日历上。【参考方案2】:
PDO 解决方案,只是为了更好的实现然后mysql_*
:
$array = $pdo->query("SELECT id, title, '$year-month-10' as start,url
FROM table")->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($array);
另一个不错的特点是它将整数保留为整数而不是字符串。
【讨论】:
PDO
是当今 php 连接各种数据库的 事实标准,MySQL
就是其中之一。仍然在恕我直言中使用 mysql-extension 与仍然制作 html 3.2
页面一样糟糕。如果您的项目真的需要它,请继续,但新代码应该与它无关,如果不是PDO
,至少使用mysqli
(注意:'i
'代表改进)。
我必须使用 mysql,因为我无法使用其他的。
我一直在玩 PDO。感谢您推动实际更新我的一些代码。它已经到位并在一些较旧的代码上运行。谢谢。【参考方案3】:
Mysqli 用户的更新:
$base= mysqli_connect($dbhost, $dbuser, $dbpass, $dbbase);
if (mysqli_connect_errno())
die('Could not connect: ' . mysql_error());
$return_arr = array();
if ($result = mysqli_query( $base, $sql ))
while ($row = mysqli_fetch_assoc($result))
$row_array['id'] = $row['id'];
$row_array['col1'] = $row['col1'];
$row_array['col2'] = $row['col2'];
array_push($return_arr,$row_array);
mysqli_close($base);
echo json_encode($return_arr);
【讨论】:
我尝试了 pdo 和 sqli,但我无法让数组正确记录。您正在使用echo json_encode($array);
,它对我不起作用,但Echo $json->encode($arr);
对我起作用......为什么?我使用mysql_query
并创建一个mysql_fetch_object
。【参考方案4】:
使用这个
$array = array();
$subArray=array();
$sql_results = mysql_query('SELECT * FROM `location`');
while($row = mysql_fetch_array($sql_results))
$subArray[location_id]=$row['location']; //location_id is key and $row['location'] is value which come fron database.
$subArray[x]=$row['x'];
$subArray[y]=$row['y'];
$array[] = $subArray ;
echo'"ProductsData":'.json_encode($array).'';
【讨论】:
以上是关于如何从 mysql 数据库构建 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
Chart.js 数据数组使用 PHP、MySQL。如何从 JSON 数组定义数据源?