为什么我无法使用 PHP Slim 框架连接到数据库?
Why can't I connect to database using PHP Slim framework?
我是 PHP Slim 框架的新手,我已经编写了连接数据库的代码,但它在控制台中显示以下错误(数据库存在,仍然出现错误):
这是我的代码:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
function dbConnect(){
$host='127.0.0.1';
$user='root';
$pass='';
$dbname='testdbmysql';
$pdo= new PDO("mysql:host=$host; dbname= $dbname", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $pdo;
}
$app = new \Slim\App;
$app->post('/hello/{id}', function (Request $request, Response $response, $args) {
echo "hello";
$names = $request->getParsedBody();
$db=dbConnect();
$names_arr=[];
$names_arr['name1']= filter_var($names['name1'], FILTER_SANITIZE_STRING);
$names_arr['name2']= filter_var($names['name2'], FILTER_SANITIZE_STRING);
$response->getBody()->write("Hello , ".$names_arr['name1']);
$query=mysqli_prepare($db, "INSERT into info(fname, lname) VALUES(?, ?)");
mysqli_stmt_bind_param($query, "ss", $names_arr['name1'], $names_arr['name2']);
$result=mysqli_stmt_execute($query);
$rows=mysqli_stmt_insert_id($query);
echo "Rows: ".$rows;
return $response;
});
$app->run();
?>
当我在互联网上搜索时,我找到了由 Laravel 框架引起的相同错误的解决方案,但没有找到关于 Slim 的解决方案。有什么我可以做的吗?
你应该删除空格
$pdo= new PDO("mysql:host=$host; dbname=$dbname", $user, $pass);
错误输出也显示空白。所以这应该是错误的。
此外,不要混淆 PDO 和 mysqli。您正在将 PDO 连接传递给 mqsqli 函数,这就是为什么您得到“预期的 mysqli,得到 PDO。”
我会坚持使用 mysqli 并通过 mysqli_connect() 建立连接。
我是 PHP Slim 框架的新手,我已经编写了连接数据库的代码,但它在控制台中显示以下错误(数据库存在,仍然出现错误):
这是我的代码:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
function dbConnect(){
$host='127.0.0.1';
$user='root';
$pass='';
$dbname='testdbmysql';
$pdo= new PDO("mysql:host=$host; dbname= $dbname", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $pdo;
}
$app = new \Slim\App;
$app->post('/hello/{id}', function (Request $request, Response $response, $args) {
echo "hello";
$names = $request->getParsedBody();
$db=dbConnect();
$names_arr=[];
$names_arr['name1']= filter_var($names['name1'], FILTER_SANITIZE_STRING);
$names_arr['name2']= filter_var($names['name2'], FILTER_SANITIZE_STRING);
$response->getBody()->write("Hello , ".$names_arr['name1']);
$query=mysqli_prepare($db, "INSERT into info(fname, lname) VALUES(?, ?)");
mysqli_stmt_bind_param($query, "ss", $names_arr['name1'], $names_arr['name2']);
$result=mysqli_stmt_execute($query);
$rows=mysqli_stmt_insert_id($query);
echo "Rows: ".$rows;
return $response;
});
$app->run();
?>
当我在互联网上搜索时,我找到了由 Laravel 框架引起的相同错误的解决方案,但没有找到关于 Slim 的解决方案。有什么我可以做的吗?
你应该删除空格
$pdo= new PDO("mysql:host=$host; dbname=$dbname", $user, $pass);
错误输出也显示空白。所以这应该是错误的。
此外,不要混淆 PDO 和 mysqli。您正在将 PDO 连接传递给 mqsqli 函数,这就是为什么您得到“预期的 mysqli,得到 PDO。”
我会坚持使用 mysqli 并通过 mysqli_connect() 建立连接。