PHP 连接 MySQL 的几种方法

学习记录 留作参考
祝君好运

mysql_connect

打开一个MySQL服务器的连接。本扩展自 PHP5.5.5起已废弃,并自PHP7.0.0开始被移除。

mysqli_connect

mysqli::__construct mysqli::connect mysqli_connect 都是都一个函数的不同名称

此函数调用有 “面向对象风格” 和 “面向过程风格” ,执行效果一样。

PHP mysqli 官方文档

面向对象风格

// 可以在连接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); // 返回为:关联数组结果集 + 索引数组结果集
}
posted @   azsd  阅读(1829)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示