使用MAMP的PDO/MySQL连接


PDO/MySQL connection using MAMP

我试图编写一个简单的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>

请帮帮我。

此行包含一个拼写错误(如果不是拼写错误):

$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);

就在连接打开之后。


参考文献:

  • http://php.net/manual/en/pdo.connections.php
  • http://php.net/manual/en/pdo.setattribute.php

对于任何使用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"