douzoudang1511 2015-03-08 19:35
浏览 163
已采纳

将php查询结果转换为json

I have the following code that queries multiple tables to get information about activities. I would like to convert the query result into array and call it whenever needed. My question is: can this query be converted into array?

<?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'];
          }
    }

    }     



          ?>
  • 写回答

1条回答 默认 最新

  • duanrui3480 2015-03-08 19:46
    关注

    Sure:

    Create a variable called $activity_store and use the while loop to set the data much in the same way it comes out of the database.

    //Get activity base information
    $activity_store = array();
    while ($activity = mysqli_fetch_array($query)){
        $activity_store['activity_related_to_id'] = $activity['activity_related_to_id'];
    

    If you need to store information about each activity pulled from the database separately you could add an index and increment it

    //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
    }
    

    Just be aware that later in your code when you refer to $activity_type_id you'll now need to refer to '$activity['activity_type_id']`

    In terms of returning JSON in php you can use json_encode to encode a variable into a JSON format:

    $json_array = json_encode($variable);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法