PDO连接到MySQL

时间:2018-11-15 15:21:05  来源:igfitidea点击:

在本教程中,我们将学习如何使用PHP PDO连接到MySQL数据库。

前提条件

在创建到MySQL数据库服务器的连接之前,必须有:

  • 在本地系统或远程服务器中安装MySQL数据库服务器。
  • MySQL数据库服务器中的一个示例数据库。
  • 一个包含用户名和密码的MySQL帐户,可以访问sample数据库。

假设我们有一个本地MySQL数据库服务器,它包含了一个测试数据库pdodemo和一个用户名为root和密码为空的帐户,我们可以将这些参数放入一个名为dbconfig.php的数据库配置文件中,如下所示:

<?php
    $host='localhost';
    $db = 'pdodemo';
    $username = 'root';
    $password = '';

我们将在需要访问此配置信息的其他脚本文件中使用require_once()函数来包含dbconfig.php配置文件。

要检查是否启用了PDO MySQL驱动程序,需要打开php.ini文件,删除前面的分号(;)来取消下面这一行的注释:

extension=php_pdo_mysql.dll

MySQL数据源名称

PDO使用了一个数据源名(DSN),它包含数据库服务器名、数据库名和其他参数,这些参数用于创建到数据库服务器的连接。不同的数据库系统需要不同的数据源名称。

要连接到MySQL,请使用下面的数据源名称:

mysql:host=host_name;dbname=db_name

MySQL数据源名称包含要连接到的主机名和数据库名。我们可以为示例数据库定义DSN,如下所示:

$dsn = "mysql:host=$host;dbname=$db";

连接到MySQL

下面的index.php脚本演示了如何使用root帐户连接到MySQL数据库服务器中的pdodemo数据库:

<?php
 
require_once 'dbconfig.php';
 
$dsn= "mysql:host=$host;dbname=$db";
 
try{
    // 使用配置数据创建PDO连接
    $conn = new PDO($dsn, $username, $password);
    
    // 如果成功连接到数据库,则显示消息
    if($conn){
        echo "成功连接到数据库 <strong>$db</strong> !";
    }
}catch (PDOException $e){
    // 报告错误消息
    echo $e->getMessage();
}

如果一切设置正确,你会看到以下信息:

成功连接到数据库 pdodemo

错误诊断

当你连接到MySQL数据库时会遇到一些常见的问题,如下所示:

如果在php.ini文件中没有启用MySQL驱动,你将得到错误消息:

could not find driver

如果提供的数据库帐户不正确,则会收到以下错误消息:

SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: YES)

如果提供的数据库主机名无效,将显示以下错误消息:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.

如果提供无效的数据库名称或MySQL数据库服务器中不存在数据库名称,则会得到以下错误消息:

SQLSTATE[HY000] [1049] Unknown database 'pdodemo'