PHP-从db到JSON获取数据
我有两个表,一个由ID和FNAME(ex,01 Google)组成,另一个由ID、名字、姓氏(ex 01 JOHN DOE)组成 最后一个数据库中的ID将用户与一个组织(这里是ID为01的f.ex Google)连接起来 我正试图通过JSON_encode将它们转换成JSON,但出于对我的热爱,我无法找出如何将我得到的两个结果连接起来 用户应该按组织进行排序 例:PHP-从db到JSON获取数据,php,mysql,json,Php,Mysql,Json,我有两个表,一个由ID和FNAME(ex,01 Google)组成,另一个由ID、名字、姓氏(ex 01 JOHN DOE)组成 最后一个数据库中的ID将用户与一个组织(这里是ID为01的f.ex Google)连接起来 我正试图通过JSON_encode将它们转换成JSON,但出于对我的热爱,我无法找出如何将我得到的两个结果连接起来 用户应该按组织进行排序 例: 我真的没有任何代码示例,因为我无法获得任何远程工作。我试图将其放入while循环中的数组中,但格式完全错误-排序也是如此。只是为了让
我真的没有任何代码示例,因为我无法获得任何远程工作。我试图将其放入while循环中的数组中,但格式完全错误-排序也是如此。只是为了让您可以开始
<?php
$outArr = array();
$arr1 = array(0 => array('ID' => '01', 'FIRSTNAME' => 'Google'));
$arr2 = array(0 => array('ID' => '01', 'FIRSTNAME' => 'JOHN', 'SURNAME' => 'DOE'),
1 => array('ID' => '01', 'FIRSTNAME' => 'NewJOHN', 'SURNAME' => 'NewDOE'));
foreach ($arr1 as $key => $compArr) {
$companyId = $compArr['ID'];
$outArr[$compArr['FIRSTNAME']] = '';
foreach ($arr2 as $arr2key => $employeeArr) {
if ($employeeArr['ID'] == $companyId) {
$outArr[$compArr['FIRSTNAME']][] .= $employeeArr['FIRSTNAME'];
}
}
}
echo json_encode($outArr);
exit;
?>
这可能会帮助您
$res = mysql_query('SELECT * FROM employee em LEFT JOIN organization org ON em.id = org.empid');
$op = array();
while($row = mysql_fetch_assoc($res))
{
print_r($row);
if(!isset($op[$row[org]])){
$op[$row[org]] = array();
}
array_push( $op[$row[org]], $row['fname']." ".$row['lname']);
}
echo json_encode($op);
以及基于本地数据库中的条目的相应结果
Array
(
[id] => 1
[fname] => john
[lname] => doe
[sno] => 1
[empid] => 1
[org] => Google
)
Array
(
[id] => 2
[fname] => will
[lname] => smith
[sno] => 2
[empid] => 2
[org] => Microsoft
)
Array
(
[id] => 3
[fname] => abdul
[lname] => raseed
[sno] => 3
[empid] => 3
[org] => Google
)
{"Google":["john doe","abdul raseed"],"Microsoft":["will smith"]}
注:DDL如下:
/*DDL Information*/
-------------------
CREATE TABLE `employee` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`fname` VARCHAR(256) DEFAULT NULL,
`lname` VARCHAR(256) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
CREATE TABLE `organization` (
`sno` INT(11) NOT NULL AUTO_INCREMENT,
`empid` VARCHAR(10) NOT NULL,
`org` VARCHAR(256) DEFAULT NULL,
PRIMARY KEY (`sno`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
节点:尝试使用最新的mysql函数,而不是弃用的函数。1。编写选择查询。2.运行查询。3.使用数据库库中与
->fetch()
等价的内容检索结果。4.使用结果构建数组。5.通过json_encode()运行数组。请不要建议使用旧的mysql_xxx()
函数;它们已被弃用和过时。改用mysqli_xxX()
或PDO。
/*DDL Information*/
-------------------
CREATE TABLE `employee` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`fname` VARCHAR(256) DEFAULT NULL,
`lname` VARCHAR(256) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
CREATE TABLE `organization` (
`sno` INT(11) NOT NULL AUTO_INCREMENT,
`empid` VARCHAR(10) NOT NULL,
`org` VARCHAR(256) DEFAULT NULL,
PRIMARY KEY (`sno`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1