我想找出一个PHP页面如何调用另一个PHP页面,该页面将返回JSON数据。

我正在使用PHP(UsersView.php)文件显示我的网站内容。但是,我将MySQL查询分离在另一个PHP(Get_Users.php)文件中。

在Get_Users.php中,我将具有一个MySQL语句来查询数据库中的数据。然后它将以JSON编码并回显。

在UsersView.php中,我将调用Get_Users.php以便检索Users JSON数据。然后,该数据将用于填充“用户表”。

问题是,我不知道如何从“ UsersView.php”中调用“ Get_Users.php”以获取数据。

UserView.php的一部分

$url =  "get_user.php?id=" . $id;
$json = file_get_contents($url);
$result = json_decode($json, true);


我正在尝试调用同一目录中的文件,但这似乎不起作用。

整个Get_Users.php

<?php
$connection = mysqli_connect("localhost", "root", "", "bluesky");

// Test if connection succeeded
if(mysqli_connect_errno()) {
    die("Database connection failed: " . mysqli_connect_error() . " (" . mysqli_connect_errno() . ") " .
        "<br>Please retry your last action. Please retry your last action. " .
        "<br>If problem persist, please follow strictly to the instruction manual and restart the system.");
}

$valid = true;

if (!isset($_GET['id'])) {
    $valid = false;
    $arr=array('success'=>0,'message'=>"No User ID!");
    echo json_encode($arr);
}

$id = $_GET['id'];

if($valid == true){
    $query = "SELECT * FROM user WHERE id = '$id'";
    $result = mysqli_query($connection, $query);
    if(mysqli_num_rows($result) == 1){
        $row = mysqli_fetch_assoc($result);
        $arr=array('success'=>1,'type'=>$row['type'],'user_id'=>$row['id'],'email'=>$row['email'],'name'=>$row['name'],'phone'=>$row['phone'],'notification'=>$row['notification']);
        echo json_encode($arr);
    }else{
        $arr=array('success'=>0,'message'=>"Invalid User ID!");
        echo json_encode($arr);
    }
}

mysqli_close($connection);
?>

最佳答案

您有几种不同的方法可以完成此操作:


您应该能够首先设置实际的id,然后像这样包含Get_Users.php文件。请注意,您不应回显Get_Users.php的输出,而应仅使用return json_encode($arr);返回编码的json数据:




// set the id in $_GET super global
$_GET['id'] = 1;
// include the file and catch the response
$result = include_once('Get_Users.php');



您还可以创建一个可以从UserView.php调用的函数:




// Get_Users.php
<?php
  function get_user($id) {
    // connect to and query database here
    // then return the result as json
    return json_encode($arr);
  }
?>

// In UserView.php you first include the above file and call the function
include_once('Get_Users.php');
$result = get_user(1);



您也可以使用file_get_contents()。请注意,您需要确保在allow_url_fopen文件中启用php.ini才能起作用:




$result = file_get_contents('http://example.com/Get_Users.php?id=1');


要启用allow_url_fopen,您需要打开已加载的配置文件并设置allow_url_fopen=1,最后重新启动Web服务器。




您还可以使用curl实现相同的结果:




$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'http://example.com/Get_Users.php?id=1');
$result = curl_exec($ch);
curl_close($ch);





也可以发出ajax请求以获取结果。这个例子使用jQuery:




$(document).ready(function() {
  $.get({
    url: 'Get_Users.php',
    data: 'id=1',
    success: function(response) {
      // response contains your json encoded data
      // in this case you **must** use echo to transfer the data from `Get_Users.php`
    }
  });
});

09-11 09:54
查看更多