PHP中数据库操作相关函数的使用方法详解
在PHP中进行数据库操作是非常常见的事情,PHP中提供了丰富的与数据库交互的函数,可以根据实际需求灵活使用。下面将介绍常用的数据库操作函数及使用方法。
1. 连接数据库
连接数据库是进行任何数据库操作的 步。PHP提供了mysqli_connect()函数和PDO类用于连接数据库,这两种方式各有优缺点,建议选择更为安全的PDO方式。
(1)mysqli_connect()函数连接MySQL数据库
$link = mysqli_connect($host, $user, $pwd, $dbname);
其中,$host是数据库主机地址,$user是数据库用户名,$pwd是数据库密码,$dbname是数据库名称。连接成功后,返回一个数据库链接对象$link。需要注意的是,出于安全性考虑,密码应该放在配置文件中,并限制相关文件的读权限。
(2)PDO类连接MySQL数据库
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8";
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
);
$conn = new PDO($dsn, $user, $pwd, $options);
其中,$dsn通过设置主机地址、数据库名和编码格式来创建一个DNS字符串,$options数组用于设置PDO连接选项,$conn是PDO对象连接。
与mysqli相比,PDO类更为安全,更加易于扩展,而且支持多种数据库类型。
2. 执行SQL语句
成功连接到数据库后,可以执行SQL语句对数据库进行操作。SQL语句可以分为查询语句和非查询语句两种,分别由mysqli_query()和PDO::query()或PDO::prepare()函数来执行。
(1)mysqli_query()执行SQL查询语句
$sql = "SELECT * FROM users";
$res = mysqli_query($link, $sql);
while ($row = mysqli_fetch_assoc($res)) {
echo $row['name'];
}
mysqli_query()函数用于执行查询语句,$res接收查询结果集,其中$res是mysqli_result对象,通过mysqli_fetch_assoc()函数遍历结果集输出数据。
(2)PDO::query()执行SQL查询语句
$sql = "SELECT * FROM users";
$stmt = $conn->query($sql);
while ($row = $stmt->fetch()) {
echo $row['name'];
}
PDO::query()函数用于执行查询语句,$stmt接收查询结果集,其中$stmt是PDOStatement对象,通过PDOStatement::fetch()函数遍历结果集输出数据。
(3)PDO::prepare()执行SQL非查询语句
$sql = "INSERT INTO users (name, age) VALUES (?, ?)"; $stmt = $conn->prepare($sql); $stmt->execute([$name, $age]);
PDO::prepare()函数用于准备一个待执行的SQL语句,$stmt接收SQL语句的预处理对象,其中$stmt是PDOStatement对象,通过execute()函数执行SQL语句。
需要注意的是,非查询语句千万不要使用PDO::query()函数执行,否则将存在安全隐患。
3. 获取执行结果
(1)mysqli_query()查询结果集
$res = mysqli_query($link, $sql); $numRows = mysqli_num_rows($res);
mysqli_num_rows()函数用于获取查询结果集的行数,$numRows接收行数。
(2)PDO::query()查询结果集
$stmt = $conn->query($sql); $numRows = $stmt->rowCount();
PDOStatement::rowCount()函数用于获取查询结果集的行数,$numRows接收行数。
(3)PDO::prepare()执行结果
$sql = "INSERT INTO users (name, age) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
if ($stmt->execute([$name, $age])) {
$lastId = $conn->lastInsertId();
}
PDO::lastInsertId()函数用于获取插入数据的自增ID。
4. 关闭数据库链接
PHP在脚本执行完毕后会自动回收内存和关闭数据库链接,但为了确保安全和性能,建议在完成数据库操作后显式地关闭数据库链接。
(1)mysqli_close()关闭mysqli数据库链接
mysqli_close($link);
(2)PDO::NULL关闭PDO数据库链接
$conn = null;
以上是PHP中常用的数据库操作函数的使用方法,从连接数据库到查询数据再到关闭链接,都需要仔细处理,以确保程序正确执行,同时也要注意安全问题。为了更好地维护数据库,SQL语句也需要根据实际需要进行优化,提高数据库的效率。
