PHP作为一种广泛使用的脚本语言,经常与MySQL数据库结合使用来构建动态网站和应用。MySQL扩展是PHP中用于与MySQL数据库交互的一组函数和类。了解并掌握MySQL扩展是PHP开发者必备技能之一。本文将深入探讨PHP MySQL扩展的必备知识和高效应用技巧。
一、MySQL扩展概述
MySQL扩展是PHP用来连接和操作MySQL数据库的一组函数。在PHP 7.0及之前的版本中,主要使用的是mysql和mysqli扩展。虽然从PHP 7.0开始,官方不再推荐使用mysql扩展,但在某些旧系统或特定场景下,了解mysql扩展的工作原理仍然具有重要意义。
二、MySQLi 扩展
MySQLi 扩展是一个面向对象和面向过程的数据库接口,提供了更多的功能和安全特性。以下是MySQLi扩展的一些关键点:
2.1 启用MySQLi 扩展
确保你的PHP环境中已启用MySQLi扩展。在php.ini文件中找到以下行并去掉前面的分号(如果存在分号):
extension=mysqli
保存并重新启动你的Web服务器以应用更改。
2.2 MySQLi 实例
创建MySQLi实例时,你可以使用以下代码:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
2.3 常用的MySQLi方法
MySQLi提供了丰富的查询和数据处理方法,如:
query()
: 执行查询并返回结果集。fetch_assoc()
: 从结果集中获取当前行作为关联数组。close()
: 关闭MySQLi连接。
2.4 MySQLi - 面向对象
使用面向对象的方式连接数据库:
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// 执行查询
$result = $mysqli->query("SELECT * FROM table");
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
}
} else {
echo "0 results";
}
$mysqli->close();
2.5 MySQLi - 面向过程
使用面向过程的方式连接数据库:
$conn = mysqli_connect("localhost", "username", "password", "database");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM table";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// 输出数据
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
三、PDO 连接
PDO(PHP Data Objects)扩展提供了一个数据访问抽象层,允许你使用相同的接口访问不同的数据库。以下是PDO连接的基本步骤:
$host = 'localhost';
$db = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
四、创建数据库和表
使用MySQLi扩展创建数据库和表的示例:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "CREATE DATABASE IF NOT EXISTS test_db";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully";
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
五、总结
MySQL扩展是PHP开发者必须掌握的核心技术之一。通过本文的介绍,你应该对MySQLi和PDO扩展有了更深入的了解。掌握这些扩展将帮助你更高效地与MySQL数据库交互,从而构建出更强大的PHP应用程序。