Php 从MySQL到JSON列出多行

Php 从MySQL到JSON列出多行,php,mysql,json,Php,Mysql,Json,我目前正在编写一个PHP脚本,该脚本将用户数据编码为JSON,以及用户可能执行的相关操作/事件。例如,用户数据中的某些字段(在“用户”MySQL表中定义)包括用户的名字和姓氏、网站登录名以及完成某些操作的点数。在第二个名为“MAYDO”的表中,存储用户执行的操作(由ID引用),并包括诸如用户所做的事情(去了星巴克,购买了X,在日期Y和Z之间执行了操作,等等)等信息 我的问题是,如何引用“MAYDO”表中的每个元素,并以JSON列表的形式将其与正确的用户关联? 我想要一些类似这样的功能: {

我目前正在编写一个PHP脚本,该脚本将用户数据编码为JSON,以及用户可能执行的相关操作/事件。例如,用户数据中的某些字段(在“用户”MySQL表中定义)包括用户的名字和姓氏、网站登录名以及完成某些操作的点数。在第二个名为“MAYDO”的表中,存储用户执行的操作(由ID引用),并包括诸如用户所做的事情(去了星巴克,购买了X,在日期Y和Z之间执行了操作,等等)等信息

我的问题是,如何引用“MAYDO”表中的每个元素,并以JSON列表的形式将其与正确的用户关联? 我想要一些类似这样的功能:

{
    'USER' {
        'Name': 'John Doe',
        'Occupation': 'Farmer',
        'Age': 39
        'User_id': 1
     },
     'MAYDO' [{
          'User_Id': 1,
          'Maydo_Id': 1,
          'Event': 'Go to Farmer\'s Market',
          'When': '2015-10-13 16:30:05'
      },
      {
          'User_Id': 1,
          'Maydo_Id': 2,
          'Event': 'Sell chickens at the auction',
          'When': '2015-11-13 12:00:00'
      }]
}
本质上,我希望“MAYDO”表中的所有行与执行它们的各自用户关联,并基本上成为该用户的JSON数据列表(每人一个JSON文件)。我目前测试的代码只接受“MAYDO”表中的最后一个条目(在发生多个事件的情况下),因此我想了解如何解决这个问题。任何帮助或提示都将不胜感激。谢谢大家!

当前代码(完全编码用户数据;仅编码最后一个“MAYDO”条目)


将用户数据转换为JSON

尝试类似的方法,请参考此有用的链接



您必须将
$userinfo['Maydo']
中的每一行推入一个数组。这里您正在将
$userinfo['Maydo']
重置为运行的最后一行,因此您当然只获取最后一行。我尝试过这样做,但它根本无法从Maydo表中获取信息。我试过:
array\u push($userinfo['Maydo',array($row))
$row
是一个数组:
array\u push($userinfo['Maydo'],$row)$userinfo=array('Maydo'=>array())
使用此解决方案,我不会得到$userinfo形式的任何输出。我认为您没有将$mayDo与$userinfo连接起来-您能告诉我如何从这里连接吗?非常感谢。将数组推入
$userinfo
的想法是关键。谢谢你,现在它更有意义了。但是,对于MayDo数组,我会为它们的所有操作列出数组,但是存储操作列表的数组名是0而不是“MayDo”,可能是因为它存储在空数组中。有没有办法将这两个数组命名为User和Maydo?有,但是如果用户的获取数据是多个用户或多维数组,您将遇到问题,但是如果您想创建类似于
array\u push的东西($userinfo[“User”],$row)
数组推送($userinfo[“Maydo”],$Maydo)
<!doctype html>
<html lang="en"> 
<head>
    <meta charset="UTF-8">
    <title>USER DATA TO JSON</title>
</head>
<body>

<?php

# Define the connection to the database 
DEFINE('DB_SERVER', 'localhost');
DEFINE('DB_USER', 'root');
DEFINE('DB_PASSWORD', ''); 
DEFINE('DB_NAME', 'Maydo');

# Create a connection to the database
$connection = @mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
$index = 1;
$query1 = "SELECT * FROM USER WHERE USER_ID = " . $index;
$userinfo = array();
$username = "";

$result1 = mysqli_query($connection, $query1) or die("ERROR: " .      
mysqli_error($connection));

while($row = mysqli_fetch_assoc($result1)) {
    $userinfo['User'] = $row;
    $username = $row['USER_NAME']; 
}

$query2 = "SELECT * FROM MAYDO WHERE USER_ID = " . $index;

$result2 = mysqli_query($connection, $query2) or die("ERROR: " .    
mysqli_error($connection));
while($row = mysqli_fetch_assoc($result2)) {
    $userinfo['Maydo'] = array($row);
}

echo json_encode($userinfo, JSON_NUMERIC_CHECK);

?> 

</body>
</html>
  <?php

    # Define the connection to the database 
    DEFINE('DB_SERVER', 'localhost');
    DEFINE('DB_USER', 'root');
    DEFINE('DB_PASSWORD', ''); 
    DEFINE('DB_NAME', 'Maydo');

    # Create a connection to the database
    $connection = @mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
    $index = 1;
    $query1 = "SELECT * FROM USER WHERE USER_ID = " . $index;
    $query2 = "SELECT * FROM MAYDO WHERE USER_ID = " . $index;

    $userinfo = array();
    $username = "";

    $result1 = mysqli_query($connection, $query1) or die("ERROR: " .      
    mysqli_error($connection));

    $result2 = mysqli_query($connection, $query2) or die("ERROR: " .    
    mysqli_error($connection));

    $mayDo = array();
    while($row = mysqli_fetch_assoc($result1)) {

        while($row2 = mysqli_fetch_assoc($result2)) {
          array_push($mayDo,$row2);
        }
        array_push($row,$mayDo);
        array_push($userinfo,$row);
    }

    echo json_encode($userinfo, JSON_NUMERIC_CHECK);

    ?>