为什么我的API REST的GET功能不会返回任何值?

时间:2015-05-31 20:12:57

标签: php mysql api rest phpmyadmin

我正在使用XAMPPPhpMyAdmin来存储我的数据库而我正在尝试创建一个API REST,但是我没有很好的结果。为此,我正在使用Slim框架。

我将所有Slim框架文件放在project文件夹中名为/htdocs的文件夹中,然后创建xamppconnect.php个文件。我还将我的api.php更改为使用我之前提到的两个文件。

我配置了我的index.phpconnect.php文件,并在index.php文件中创建了我的GET方法,但是当我尝试获取数据库中的信息时,我可以'得到任何价值。

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

routes

我把这里的所有代码都放在这里:

的index.php

/project/app/libs/connect.php
/project/app/routes/api.php

connect.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();

?>

api.php

<?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(); } }); ,我在数据库中的表名为project。此数据库保留在我的users

然后,我尝试使用我的phpmyadmin方法返回我在此表上的值,并将其放入我的网址get,但它不起作用。我刚看到一个空白页面,我在网上看到它必须给我我表中的价值。

我认为我的问题可能在localhost/project/users/headersstatus,因为我无法理解它们并且我在文档中搜索它们但它没有帮助我很多我搜索的页面是:

http://docs.slimframework.com/response/headers/ http://docs.slimframework.com/response/status/ http://docs.slimframework.com/response/body/

所以,如果您还可以添加一些信息来清除这些概念,我将非常感谢所有人。

我是API REST的新手,我看不到我的错误(我正在使用教程)。为什么它不起作用?

编辑:我尝试了Abdo Adel的建议,但也没有用。它给了我以下错误。

详情

body

微量

Type: ErrorException
Code: 8
Message: Undefined variable: users
File: C:\xampp\htdocs\proyecto\app\routes\api.php
Line: 21 --> Here it's the line when I have echo sentence

EDIT2:现在我知道问题出现在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} 上,因为当我使用json_encode时,它会给我错误:JSON_ERROR_UTF8。到目前为止,我无法解决它。

1 个答案:

答案 0 :(得分:1)

变化

$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);