我是Restful API的新手。我正在尝试制作自己的以下互联网教程。对于此API,我使用的是Slim PHP Framework。
我已经创建了db.php(配置文件):
<?php
class db{
//Properties
private $dbhost = 'localhost';
private $dbuser = 'root';
private $dbpass = '';
private $dbname = 'Connect';
//Connect
//create MYSQL connect string
public function connect(){
$mysql_connect_str = "mysql:host=$this->dbhost;dbname=$this->dbname";
$dbConnection = new PDO($mysql_connect_str, $this->dbuser, $this->dbpass);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, POD::ERRMODE_EXCEPTION);
return $dbConnection;
}
}
然后我得到了students.php(我要在其中获取数据的地方):
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
$app = new \Slim\App;
//Get All Students
$app->get('/api/students', function(Request $request, Response $response){
$sql = "SELECT * FROM student";
try{
$db = new db();
// connect
$db = $db->connect();
$stmt = $db->query($sql);
$students = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($students);
} catch(PDOException $e){
//e for errors exception handling
echo '{"error": {"text": '.$e->getMessage().'}';
}
});
我的index.php:
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
require __DIR__ . '/vendor/autoload.php';
require 'src/config/db.php';
$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {
$name = $args['name'];
$response->getBody()->write("Hello, $name");
return $response;
});
//Customer Routes
require 'src/routes/students.php';
$app->run();
在即时加载我的students.php文件(http://localhost:8080/rest/index.php/api/students)时,显示此错误:
Slim应用程序错误 网站发生错误。抱歉给您带来的不便。
当我运行终端并使用此命令时: mysql -u root -p -h本地主机 它连接到数据库。因此属性应该是正确的。 我仍然不知道问题出在哪里。 谢谢大家阅读和回答!
编辑:我在数据库中使用xampp
第二次修改:我删除了db.php文件
<?php
class db{
//Properties
private $dbhost = 'localhost';
private $dbuser = 'root';
private $dbpass = '';
private $dbname = 'Connect';
//Connect
//create MYSQL connect string
public function connect(){
$mysql_connect_str = "mysql:host=$this->dbhost;dbname=$this->dbname";
$dbConnection = new PDO($mysql_connect_str, $this->dbuser, $this->dbpass);
//$dbConnection->setAttribute(PDO::ATTR_ERRMODE, POD::ERRMODE_EXCEPTION);
return $dbConnection;
}
}
我删除了这一行,现在它显示了我选择的表。但是为什么我必须删除此行?我遵循了教程,并显示了这一行。