在本教程中,您将学习如何使用PHP连接到MySQL服务器。
为了存储或访问MySQL数据库中的数据,您首先需要连接到MySQL数据库服务器。PHP提供了两种不同的连接到MySQL服务器的方式:MySQLi(改进的MySQL)和PDO(PHP数据对象)扩展。
虽然PDO扩展名更具可移植性,并且支持超过十二个不同的数据库,但顾名思义,MySQLi扩展名仅支持MySQL数据库。但是,MySQLi扩展提供了一种连接到MySQL数据库服务器并在其中执行查询的简便方法。PDO和MySQLi都提供了一个面向对象的API,但是MySQLi还提供了一个过程API,对于初学者来说相对容易理解。
提示:与PDO扩展相比,PHP的MySQLi扩展同时提供了速度和功能优势,因此对于特定于MySQL的项目,它可能是更好的选择。
在PHP中,您可以使用mysqli_connect()函数轻松地执行此操作。PHP和MySQL数据库服务器之间的所有通信都通过此连接进行。以下是使用MySQLi和PDO扩展连接到MySQL的三种基本语法:
$link = mysqli_connect("hostname", "username", "password", "database");
$mysqli = new mysqli("hostname", "username", "password", "database");
$pdo = new PDO("mysql:host=hostname;dbname=database", "username", "password");
上面语法中的hostname参数指定主机名(例如localhost)或MySQL服务器的IP地址,而username和password参数指定访问MySQL服务器的凭据,而数据库参数(如果提供)将指定默认MySQL 执行查询时要使用的数据库。
下面的示例演示如何使用MySQLi(程序和面向对象的方式)和PDO扩展连接到MySQL数据库服务器。
<?php /* 尝试MySQL服务器连接。 假设您正在运行MySQL。 具有默认设置的服务器(没有密码的用户“root”) */ $link = mysqli_connect("localhost", "root", ""); // 检查连接 if($link === false){ die("错误:无法连接。" . mysqli_connect_error()); } //打印主机信息 echo "连接成功。 主机信息: " . mysqli_get_host_info($link); ?>
<?php /* 尝试MySQL服务器连接。 假设您正在运行MySQL。 具有默认设置的服务器(没有密码的用户“root”) */ $mysqli = new mysqli("localhost", "root", "", "demo"); // 检查连接 if($mysqli === false){ die("错误:无法连接。" . $mysqli->connect_error); } //打印主机信息 echo "连接成功。 主机信息:" . $mysqli->host_info; ?>
<?php /*尝试MySQL服务器连接。 假设您正在运行MySQL。 具有默认设置的服务器(没有密码的用户“root”) */ try{ $pdo = new PDO("mysql:host=localhost", "root", ""); //将PDO错误模式设置为异常 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //打印主机信息 echo "连接成功。 主机信息:" . $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); } catch(PDOException $e){ die("错误:无法连接。 " . $e->getMessage()); } ?>
注意: MySQL数据库服务器的默认用户名是root,没有密码。但是,为了防止数据库被入侵和未经授权的访问,您应该为MySQL帐户设置密码。
提示:将PDO::ATTR_ERRMODE属性设置为PDO::ERRMODE_EXCEPTION将告诉PDO在发生数据库错误时抛出异常。
脚本执行结束后,与MySQL数据库服务器的连接将自动关闭。但是,如果您想提前关闭它,只需调用PHP mysqli_close()函数即可。
<?php /*尝试MySQL服务器连接。 假设您正在运行MySQL。 具有默认设置的服务器(没有密码的用户“root”)*/ $link = mysqli_connect("localhost", "root", ""); // 检查连接 if($link === false){ die("错误:无法连接。" . mysqli_connect_error()); } // 打印主机信息 echo "连接成功。 主机信息: " . mysqli_get_host_info($link); // 关闭连接 mysqli_close($link); ?>
<?php /*尝试MySQL服务器连接。 假设您正在运行MySQL。 具有默认设置的服务器(没有密码的用户“root”) */ $mysqli = new mysqli("localhost", "root", "", "demo"); // 检查连接 if($mysqli === false){ die("错误:无法连接。" . $mysqli->connect_error); } // 打印主机信息 echo "连接成功。 主机信息: " . $mysqli->host_info; // 关闭连接 $mysqli->close(); ?>
<?php /* 尝试MySQL服务器连接。 假设您正在运行MySQL。 具有默认设置的服务器(没有密码的用户“root”) */ try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //将PDO错误模式设置为异常 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //打印主机信息 echo "连接成功。 主机信息: " .$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); } catch(PDOException $e){ die("错误:无法连接。" . $e->getMessage()); } //关闭连接 unset($pdo); ?>