2013-02-01 39 views
1

我有两个表,一个由ID和FNAME(例如,01 Google),另一个ID,FIRSTNAME,SURNAME(例如01 JOHN DOE)组成。PHP - 从数据库获取数据到JSON

最后一个数据库中的ID将用户与组织连接(f.ex Google,ID为01)。

我试图通过json_encode将这些转换成JSON,但我无法为我的爱找出如何连接我得到的两个结果。

用户应该按组织排序。

例:

{"Google":["John Doe","Paul"],"Microsoft":["Bill Gates"]} 

我真的没有任何代码例子,因为我不能得到任何远程工作。我试图把它放到while循环中的数组中,但是格式都是错的 - 排序也是如此。

+1

1.编写选择查询。 2.运行查询。 3.用任何你的数据库库的' - > fetch()'等价的方法检索结果。 4.用结果构建数组。 5.通过json_encode()运行数组。 –

回答

1

只是让你可以上手,

<?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; 
?> 
1

这可能会帮助你,

$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

请不要使用旧的'mysql_xxx()'函数;他们被弃用和过时。改为使用'mysqli_xxX()'或PDO。 – SDC

+0

@SDC谢谢。 –