Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么API REST的GET函数不返回任何值?_Php_Mysql_Api_Rest_Phpmyadmin - Fatal编程技术网

Php 为什么API REST的GET函数不返回任何值?

Php 为什么API REST的GET函数不返回任何值?,php,mysql,api,rest,phpmyadmin,Php,Mysql,Api,Rest,Phpmyadmin,我正在使用XAMPP和PhpMyAdmin来存储我的数据库,我正在尝试创建一个API REST,但没有得到好的结果。为此,我使用了Slim框架 我将所有Slim framework文件放在xampp文件夹中名为project的/htdocs文件夹中,并创建connect.php和api.php文件。我还将index.php更改为使用我前面提到的两个文件 我配置了connect.php和index.php文件,并在api.php文件中创建了GET方法,但当我试图获取数据库中的信息时,我无法获得任何

我正在使用
XAMPP
PhpMyAdmin
来存储我的数据库,我正在尝试创建一个API REST,但没有得到好的结果。为此,我使用了Slim框架

我将所有Slim framework文件放在
xampp
文件夹中名为
project
/htdocs
文件夹中,并创建
connect.php
api.php
文件。我还将
index.php
更改为使用我前面提到的两个文件

我配置了
connect.php
index.php
文件,并在
api.php
文件中创建了GET方法,但当我试图获取数据库中的信息时,我无法获得任何值

我的意思是,
connect.php
api.php
这两个文件都位于名为
app
的文件夹中,而且它们分别位于另一个名为
libs
routes
的文件夹中

/project/app/libs/connect.php
/project/app/routes/api.php
我把我所有的代码都放在这里:

index.php

<?php

  require 'Slim/Slim.php'; 

  \Slim\Slim::registerAutoloader();

  $app = new \Slim\Slim();

  define("SPECIALCONSTANT",true);

  require 'app/libs/connect.php';
  require 'app/routes/api.php';

  $app->run();

?>
<?php
if(!defined("SPECIALCONSTANT")) die("Access denied");

function getConnection()
{
    try{
        $db_username = "root";
        $db_password = "";
        $connection = new PDO("mysql:host=localhost;dbname=project",$db_username,$db_password);
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }catch(PDOException $e)
    {
        echo "Error: " . $e->getMessage();
    }

    return $connection;
}
?>
<?php
if(!defined("SPECIALCONSTANT")) die("Access denied");

$app->get("/users/",function() use($app)
{
    try{
        $connection = getConnection();
        $dbh = $connection->prepare("SELECT * FROM users");
        $dbh->execute();
        $users = $dbh->fetchAll();
        $connection = null;

        $app->response->headers->set("Content-type","application/json");
        $app->response->status(200);
        $app->response->body(json_encode($users));

    }catch(PDOException $e)
    {
        echo "Error: " . $e->getMessage();
    }
});
跟踪

0 C:\xampp\htdocs\project\app\routes\api.php(21): Slim\Slim::handleErrors(8, 'Undefined varia...', 'C:\\xampp\\htdocs...', 21, Array)
1 [internal function]: {closure}()
2 C:\xampp\htdocs\project\Slim\Route.php(468): call_user_func_array(Object(Closure), Array)
3 C:\xampp\htdocs\project\Slim\Slim.php(1357): Slim\Route->dispatch()
4 C:\xampp\htdocs\project\Slim\Middleware\Flash.php(85): Slim\Slim->call()
5 C:\xampp\htdocs\project\Slim\Middleware\MethodOverride.php(92): Slim\Middleware\Flash->call()
6 C:\xampp\htdocs\project\Slim\Middleware\PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
7 C:\xampp\htdocs\project\Slim\Slim.php(1302): Slim\Middleware\PrettyExceptions->call()
8 C:\xampp\htdocs\project\index.php(19): Slim\Slim->run()
9 {main} 
EDIT2:现在我知道问题出在
json\u encode
上,因为当我使用
json\u last\u error()
时,它给了我一个错误:
json\u error\u UTF8
。那一刻我无法解决它。

改变

$app->response->headers->set("Content-type","application/json");
$app->response->status(200);
$app->response->body(json_encode($users));


它不起作用。现在它给了我一个“细长应用程序错误”,而不是一个空白页。为什么,在你看来,我不必使用$app?我以前没有使用过'Slim'框架,所以我不知道你为什么要使用
$app
,我只是给了你一个原生的方法(我相信它是有效的):如果你看到它页面的文档(我在上面放的),它像setBody一样放,但也不起作用。我遵循了一个教程,但它对我也不起作用。我不知道该怎么办。我要编辑我的问题,把我的错误放进去。你试过
var\u dump($users)
了吗,它好像是空的,在哪里?回声句的前后?
$app->response->headers->set("Content-type","application/json");
$app->response->status(200);
$app->response->body(json_encode($users));
header("HTTP/1.1 200");
header("Content-Type:application/json; charset=utf-8");
echo json_encode($users);