我想知道PHP页面如何调用另一个PHP页面,它将返回JSON数据。
我正在使用PHP(UsersView.php)文件来显示我的网站内容。但是,我在另一个PHP(Get_Users.php)文件中分离了MySQL查询。
在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);
?>
答案 0 :(得分:4)
您有几种不同的方法可以实现这一目标:
water
,然后像这样包含unspecified
文件。请注意,您应该不回显id
的输出,而只使用Get_Users.php
返回编码的json数据:Get_Users.php
return json_encode($arr);
调用的函数:// 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
答案 1 :(得分:1)
将UsersView.php更改为喜欢此内容
$actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['CONTEXT_PREFIX'];
$url = "get_users.php?id=" . $id;
$url = $actual_link.$url;
$json = file_get_contents($url);
$result = json_decode($json, true);
这样可以正常工作。