将php查询结果转换为json

将php查询结果转换为json,php,mysql,json,Php,Mysql,Json,我有以下代码查询多个表以获取有关活动的信息。我想将查询结果转换为数组,并在需要时调用它。 我的问题是:这个查询可以转换成数组吗 <?php function view_full_activity($activity_field){ global $connection; $contact_id = $_REQUEST['contact_id']; $activity_id = $_REQUEST['activity_id'];

我有以下代码查询多个表以获取有关活动的信息。我想将查询结果转换为数组,并在需要时调用它。 我的问题是:这个查询可以转换成数组吗

<?php
function view_full_activity($activity_field){
            global $connection;

        $contact_id = $_REQUEST['contact_id'];
        $activity_id = $_REQUEST['activity_id'];
        $get = "SELECT * FROM activity_base WHERE activity_id = '$activity_id' "
                                    or die("Error: ".mysqli_error($connection));
        $query = mysqli_query($connection, $get);
    //Get activity base information
        while ($activity = mysqli_fetch_array($query)){
            $activity_related_to_id = $activity ['activity_related_to_id'];
            $activity_id = $activity['activity_id'];
            $activity_type_id = $activity['activity_type_id'];
      $activity_entity_type_id = $activity['activity_entity_type_id'];
            $activity_title = $activity['activity_title'];
            $activity_due_date = $activity['activity_due_date'];
            $activity_created_by = $activity['activity_created_by'];
            $activity_created_on = $activity['activity_created_on'];
            $activity_status_code_id = $activity['activity_status_code_id'];
            $activity_type_icon;
            $activity_due_date = $activity['activity_due_date'];
      $activity_create_date = date("m-d-Y", strtotime($activity['activity_created_on']));

      //Reverse Date
      $activity_due_date = date("m-d-Y ", strtotime($activity_due_date));

            if ($activity_type_id == "1"){
                $activity_type_icon = "fa fa-envelope";
            }else if ($activity_type_id == "3"){
                $activity_type_icon = "fa fa-suitcase";
            }else if ($activity_type_id == "2"){
                $activity_type_icon = "fa fa-phone";
            }

      if ($activity_entity_type_id == "1") {
        $acitvity_url = "acct_id";
        $acitivty_is_for ="accounts_base";
        $page_url = "account-profile.php";
      }else if ($activity_entity_type_id == "2") {
        $acitvity_url = "contact_id";
        $acitivty_is_for ="contacts";
        $page_url = "contact-profile.php";
      }else if ($activity_entity_type_id == "3") {
        $acitvity_url = "contact_id";
        $acitivty_is_for ="contacts";
        $page_url = "contact-profile.php";
      }
          //Get detailed activity information 
      //If activity is Email
    if ($activity_type_id == "1") {
        $email_details = email_activity_details($activity_id);
        while ( $email = mysqli_fetch_assoc($email_details)) {
          $activity_details = nl2br($email['email_message']);

        }
    }else if ($activity_type_id == "2") {
        $call_details = call_activity_details($activity_id);
        while ( $call = mysqli_fetch_assoc($call_details)) {
          $activity_details = $call['call_details'];
          }
        }else if ($activity_type_id == "3") {
        $meeting_details = meeting_activity_details($activity_id);
        while ( $meeting = mysqli_fetch_assoc($meeting_details)) {
          $activity_details = $meeting['meeting_details'];
          }
        }
        //Get creator user info
          $user_query = get_user_info($activity_created_by);
          while ($user = mysqli_fetch_array($user_query)) {
            $activity_created_by = $user['user_full_name'];
          }
    }

    }     



          ?>

当然可以:

创建一个名为
$activity\u store
的变量,并使用while循环设置数据,设置方式与从数据库中获取数据的方式大致相同

//Get activity base information
$activity_store = array();
while ($activity = mysqli_fetch_array($query)){
    $activity_store['activity_related_to_id'] = $activity['activity_related_to_id'];
如果需要单独存储从数据库中提取的每个活动的信息,可以添加一个索引并增加它

//Get activity base information
$activity_store = array();
$i = 0;
while ($activity = mysqli_fetch_array($query)){
    $activity_store[$i]['activity_related_to_id'] = $activity['activity_related_to_id'];
    ...
    $i++; //increments $i by 1
}
请注意,稍后在代码中,当您参考
$activity\u type\u id
时,您现在需要参考“$activity['activity\u type\u id]”`

在php中返回JSON时,您可以使用
JSON\u encode
将变量编码为JSON格式:

$json_array = json_encode($variable);

该查询无法转换,但其结果可以确定。但此代码中存在一些语法问题。例如,以行
$activity\u type\u图标为例这意味着什么?还有,为什么这么复杂?结果已经是一个数组。为什么不直接转换数组中的某些值呢?或者,更好的方法是在sql语句中进行日期转换?@arkascha这是一个变量声明,允许我根据活动类型更改图标。如果是,它是有效的,但没有任何意义。这是php,仅仅声明一个变量是没有意义的。只有为其指定一个值(可能是默认值)时,它才有意义。我尝试了第一个选项,但是数组返回为空。没关系,我能够修复它。谢谢你的帮助。