欢迎访问宙启技术站
智能推送

PHP中数据库操作相关函数的使用方法详解

发布时间:2023-06-02 02:32:19

在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语句也需要根据实际需要进行优化,提高数据库的效率。