我正在尝试编写一个简单的CMS,但在执行PDO连接时遇到了try / catch错误。我很确定在使用PDO时错误来自MAMP,但我不知道如何解决它。我写的代码如下:
包括/ connection.php
<?php
try {
$dbc = new PDO('myqsl:host=localhost;dbname=cms1', 'root', 'root');
} catch (PDOException $e){
exit("Database error.");
}
?>
的index.php
<?php
include_once('includes/connection.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div class="container">
<a href="index.php">CMS</a>
<ol>
<li><a href="article.php?id=1">Article title</a> - <small>Posted 10th Jan</small></li>
</ol>
</div>
</body>
</html>
请帮帮我。
答案 0 :(得分:4)
此行包含拼写错误(如果不是拼写错误):
$dbc = new PDO('myqsl:host=localhost
^^^^^
应为:
$dbc = new PDO('mysql:host=localhost
您的PDOException
还应包含真实的错误消息,而不仅仅是“数据库错误”:
catch(PDOException $e) { print $e->getMessage(); }
,包括:
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
连接打开后。
参考文献:
答案 1 :(得分:0)
对于任何使用 Laravel 和 MAMP 的人:
您还需要将以下内容添加到您的代码/控制器中(通常在您的班级之外)。
使用 PDO;
示例如下:
<?php
namespace App\Http\Controllers\db_task_related\misc\pdo_related;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use PDO;
class pdo_test extends Controller
{
public function run ()
{
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "my_db";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
$conn = null;
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
}
}
没有'使用PDO;'在某些情况下,您会收到错误
例如: 找不到类“App\Http\Controllers\db_task_related\misc\column_checks\PDO”