PDO/MySQL 使用 MAMP 连接

PDO/MySQL connection using MAMP

我正在尝试编写一个简单的 CMS,但在进行 PDO 连接时遇到了 try/catch 错误。我很确定使用 PDO 时错误来自 MAMP,但我不知道如何修复它。我写的代码如下:

includes/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>

请帮帮我。

此行有错字(如果不是错字):

$dbc = new PDO('myqsl:host=localhost
                ^^^^^

应读作:

$dbc = new PDO('mysql:host=localhost

您的 PDOException 还应包含 真实的 错误消息,而不仅仅是 "Database error":

catch(PDOException $e) { print $e->getMessage(); }

包括:

$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

连接打开后。


参考文献:

对于使用 Laravel 和 MAMP 的任何人:

您还需要将以下内容添加到您的 code/controller(通常在您的 class 之外)。

使用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();
        }

    }
}

没有'use PDO;'在某些情况下你会收到一个错误

例如: Class 'App\Http\Controllers\db_task_related\misc\column_checks\PDO' 未找到