在PHP中,使用MySQLi扩展连接MySQL数据库时,可以采用面向过程或面向对象的方式来实现。以下是两种不同方式的具体使用案例:
面向过程方式:
<?php
// 定义数据库连接参数
$servername = 'localhost';
$username = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
// 使用mysqli_connect函数建立连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检查连接是否成功
if (mysqli_connect_errno()) {
echo "连接失败: " . mysqli_connect_error();
exit();
} else {
echo "连接成功!";
// 进行数据库查询操作,例如:
$sql = "SELECT * FROM your_table";
$result = mysqli_query($conn, $sql);
// 处理查询结果...
while ($row = mysqli_fetch_assoc($result)) {
print_r($row);
}
// 关闭数据库连接
mysqli_close($conn);
}
?>
面向对象方式:
<?php
// 创建mysqli对象并连接数据库
$mysqli = new mysqli('localhost', 'your_username', 'your_password', 'your_database');
// 检查连接是否成功
if ($mysqli->connect_error) {
die("连接失败: " . $mysqli->connect_error);
} else {
echo "连接成功!";
// 进行数据库查询操作
$sql = "SELECT * FROM your_table";
$result = $mysqli->query($sql);
// 处理查询结果
while ($row = $result->fetch_assoc()) {
print_r($row);
}
// 关闭结果集(如果需要的话,对于非缓冲查询是必需的)
$result->free();
// 关闭数据库连接
$mysqli->close();
}
?>
以上两个示例都展示了如何通过mysqli扩展连接MySQL数据库以及执行一个简单的查询操作。面向对象方式更强调封装和继承等面向对象特性,通过创建 mysqli
类的实例来进行数据库操作;而面向过程方式则是调用全局函数来完成相同的功能。在现代PHP开发中,推荐使用面向对象的方式,因为它能更好地适应复杂的应用场景且具有更好的可维护性。
在PHP中使用MySQLi扩展进行数据库查询,并结合 try...catch
异常处理机制,可以确保对可能出现的错误进行妥善处理。以下是一个结合MySQLi查询与 try...catch
的例子:
面向对象方式:
<?php
$servername = 'localhost';
$username = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
try {
// 创建一个新的MySQLi对象
$mysqli = new mysqli($servername, $username, $password, $dbname);
// 设置报告模式为异常(默认情况下mysqli可能返回错误码而非抛出异常,这里确保触发异常)
$mysqli->set_charset("utf8"); // 设置字符集
$mysqli->begin_transaction(); // 开启事务(可选,用于原子操作)
// SQL查询
$sql = "SELECT * FROM your_table WHERE some_column = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $someValue); // 参数绑定
$someValue = "example_value";
$stmt->execute();
// 获取查询结果
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
print_r($row);
}
// 提交事务(如果开启了事务)
$mysqli->commit();
} catch (mysqli_sql_exception $e) {
// 如果在执行过程中出现错误(如查询失败、事务回滚失败等)
echo "Error: " . $e->getMessage();
// 回滚事务(在异常发生时恢复数据一致性)
if ($mysqli->in_transaction) {
$mysqli->rollback();
}
} finally {
// 关闭数据库连接
if ($mysqli instanceof mysqli && !empty($mysqli)) {
$mysqli->close();
}
}
?>
在这个例子中,try
块内包含了可能会抛出异常的数据库操作,如连接数据库、执行SQL查询等。如果在执行这些操作时遇到错误(如SQL语法错误、连接失败等),将会抛出 mysqli_sql_exception
异常,这时 catch
块将捕获这个异常并进行相应的错误处理,比如记录错误日志、显示友好错误信息等,并可能执行回滚事务的操作以保持数据的一致性。
最后,无论是否发生异常,finally
块都会被执行,用于关闭已经打开的数据库连接,确保资源得到释放。请注意,PHP 5.5版本以前不支持 finally
关键字,那时你需要在 catch
块末尾手动关闭连接。