PHP 连接 MySQL 的几种方法
学习记录 留作参考
祝君好运
mysql_connect
打开一个MySQL服务器的连接。本扩展自 PHP5.5.5起已废弃,并自PHP7.0.0开始被移除。
mysqli_connect
mysqli::__construct mysqli::connect mysqli_connect 都是都一个函数的不同名称
此函数调用有 “面向对象风格” 和 “面向过程风格” ,执行效果一样。
面向对象风格
// 可以在连接Mysql的时候指定默认要操作的库名,也可以在连接成功之后再去指定要操作的库。
$mysqli = new mysqli('localhost', 'my_user', 'my_passwd', 'my_db');
if ($mysqli->connect_errno) {
echo 'mysql连接出错';
die;
}
// 选择用于数据库查询的默认数据库
// 不管是连接数据库时是否设置了默认数据库,都可以用该方法重新指定默认数据库,返回bool
$bool = $mysqli->select_db('my_db2');
if (!$bool) {
var_dump($mysqli->error); // 如果操作失败,可通过打印error获取错误的描述信息
exit;
}
$mysqli->set_charset('utf8mb4'); // 设置字符集
printf($mysqli->host_info); // 输出一些信息
// query() 方法可执行一些数据库查询
// 失败时返回 false
// 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回true。
$result = $mysqli->query("SELECT * from `table_name`"); // 返回的是从数据库查询中获取的结果集
$res = $result->fetch_assoc(); // 获取结果集的一条数据,为关联数组(可多次调用,自动获取下一条,直至最后一条-此后返回为null)
$res = $result->fetch_row(); // 获取结果集的一条数据,为索引数组(可多次调用,自动获取下一条,直至最后一条-此后返回为null)
// 获取结果集的一条数据,可以设置返回结果的格式,接收一个参数(PHP常量),对应为:
// MYSQLI_ASSOC = 关联数组, MYSQLI_NUM = 索引数组, MYSQLI_BOTH = 二者都有,默认参数
// 可多次调用,自动获取下一条,直至最后一条-此后返回为null
$res = $result->fetch_array(MYSQLI_NUM);
$mysqli->close(); // 关闭连接
面向过程风格
$conn = mysqli_connect('localhost', 'my_user', 'my_passwd', 'my_db') or die('数据库连接错误');
mysqli_set_charset($conn, 'utf8mb4'); // 设置字符集
$result = mysqli_query($conn, "SELECT * from `user` limit 1"); // 执行sql语句
var_dump($result);
mysqli_close($conn); // 关闭连接
PDO类
代表 PHP与数据库之间的一个连接
PDO类
PDO 支持的数据库驱动列表
MySQL 数据库连接配置 dsn 参考格式
PDOStatement 类参考
$dsn = 'mysql:dbname=my_db;host=127.0.0.1';
try {
$dbh = new PDO($dsn, 'my_user', 'my_passwd');
} catch (PDOException $e) {
echo 'Connection filed:' . $e->getMessage();
exit;
}
$sql = 'xxx';
// exec() 执行一条 SQL 语句,并返回受影响的行数。如果没有受影响的行,则返回0。
// 不要用来执行查询语句!!!
$res = $dbh->exec($sql);
// query() 执行 SQL 语句,以 PDOStatement 对象形式返回结果集
$res = $dbh->query($sql);
// 返回结果为 false 时,表示执行失败。此处要使用 ===
if ($res === false) {
$err = $dbh->errorInfo();
print_r($err);
exit;
}
// 调用 PDOStatement 类的一些方法, 返回一些结果集
// 方法1: 从结果集中获取下一行,接收参数可定义返回的格式
$row = $res->fetch(); // 默认的格式:返回一个索引为结果集列名和以0开始的列号的数组
$row = $res->fetch(PDO::FETCH_ASSOC); // 返回一个索引为结果集列名的数组
// 方法2: 返回一个包含结果集中所有行的数组,接收参数可定义返回的格式
$row = $res->fetchAll(); // 默认的格式:返回一个索引为结果集列名和以0开始的列号的数组
$row = $res->fetchAll(PDO::FETCH_ASSOC); // 返回一个索引为结果集列名的数组
// 也可以直接循环 PDOStatement类对象, 可获得全部结果集=>效果相当于不加参数的fetchAll()
foreach ($res as $val) {
var_dump($val); // 返回为:关联数组结果集 + 索引数组结果集
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!