我正在使用XAMPP
和PhpMyAdmin
来存储我的数据库而我正在尝试创建一个API REST,但是我没有很好的结果。为此,我正在使用Slim框架。
我将所有Slim框架文件放在project
文件夹中名为/htdocs
的文件夹中,然后创建xampp
和connect.php
个文件。我还将我的api.php
更改为使用我之前提到的两个文件。
我配置了我的index.php
和connect.php
文件,并在index.php
文件中创建了我的GET方法,但是当我尝试获取数据库中的信息时,我可以'得到任何价值。
这两个文件,我的意思是api.php
和connect.php
位于名为api.php
的文件夹中,而且它们分别位于名为app
和libs
的另一个文件夹中
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/
,headers
和status
,因为我无法理解它们并且我在文档中搜索它们但它没有帮助我很多我搜索的页面是:
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
。到目前为止,我无法解决它。
答案 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);