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

PHP数据库函数:MySQLi和PDO扩展的使用方法

发布时间:2023-06-07 06:27:43

PHP作为Web开发语言之一,与MySQL数据库的结合使用是相当普遍的。PHP提供了两个核心扩展库MySQLi和PDO来进行数据库交互操作。本文将详细介绍这两个扩展库的概念、使用方法和优缺点,以供参考。

一、什么是MySQLi和PDO扩展

1. MySQLi扩展

MySQLi(MySQL improved extension)是对PHP中的MySQL扩展的增强版,可以完全支持MySQL 4.1及更高版本的特性。因此,当使用MySQL数据库时,建议使用MySQLi扩展。

2. PDO扩展

PDO(PHP Data Objects)是PHP中的一个抽象数据层,它提供了统一的访问不同数据库的接口。PDO提供了一组方法来访问多种数据库,包括MySQL、Oracle、PostgreSQL和SQLite等。因此,如果需要支持多个数据库,建议使用PDO扩展。

二、MySQLi扩展的使用方法

1. 连接MySQL数据库

在使用MySQLi连接MySQL数据库之前,需要了解四个关键信息:主机名、用户名、密码和数据库名。连接方法如下:

$servername = "localhost";

$username = "root";

$password = "password";

$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {

    die("连接失败: " . $conn->connect_error);

}

2. 查询MySQL数据库

查询(SELECT)MySQL数据库时,可以使用mysqli_query()函数或mysqli_prepare()和mysqli_stmt_execute()函数。其中,mysqli_query()函数返回查询结果集的对象,可以使用mysqli_fetch_array()或mysqli_fetch_assoc()函数提取数据。

$sql = "SELECT * FROM myTable";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {

        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " " . $row["age"]. "<br>";

    }

} else {

    echo "0 结果";

}

3. 插入MySQL数据库

插入(INSERT)MySQL数据库时,可以使用mysqli_query()函数或mysqli_prepare()和mysqli_stmt_execute()函数。其中,mysqli_query()函数返回布尔值,表示插入操作是否成功。

$sql = "INSERT INTO myTable (name, age, hobby) VALUES ('John', '18', 'swimming')";

if ($conn->query($sql) === TRUE) {

    echo "新记录插入成功";

} else {

    echo "Error: " . $sql . "<br>" . $conn->error;

}

4. 更新MySQL数据库

更新(UPDATE)MySQL数据库时,可以使用mysqli_query()函数或mysqli_prepare()和mysqli_stmt_execute()函数。其中,mysqli_query()函数返回布尔值,表示更新操作是否成功。

$sql = "UPDATE myTable SET age='20' WHERE name='John'";

if ($conn->query($sql) === TRUE) {

    echo "记录更新成功";

} else {

    echo "Error: " . $sql . "<br>" . $conn->error;

}

5. 删除MySQL数据库

删除(DELETE)MySQL数据库时,可以使用mysqli_query()函数或mysqli_prepare()和mysqli_stmt_execute()函数。其中,mysqli_query()函数返回布尔值,表示删除操作是否成功。

$sql = "DELETE FROM myTable WHERE name='John'";

if ($conn->query($sql) === TRUE) {

    echo "记录删除成功";

} else {

    echo "Error: " . $sql . "<br>" . $conn->error;

}

三、PDO扩展的使用方法

1. 连接MySQL数据库

在使用PDO连接MySQL数据库之前,需要了解四个关键信息:主机名、用户名、密码和数据库名。连接方法如下:

$servername = "localhost";

$username = "root";

$password = "password";

$dbname = "myDB";

try {

    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "连接成功";

} catch(PDOException $e) {

    echo "连接失败: " . $e->getMessage();

}

2. 查询MySQL数据库

查询(SELECT)MySQL数据库时,可以使用query()函数或prepare()和execute()函数。其中,query()函数返回查询结果集的对象,可以使用fetchAll()或fetch()函数提取数据。

$sql = "SELECT * FROM myTable";

$result = $conn->query($sql);

if ($result->rowCount() > 0) {

    $rows = $result->fetchAll(PDO::FETCH_ASSOC);

    foreach ($rows as $row) {

        echo "id: " . $row['id']. " - Name: " . $row['name']. " " . $row['age']. "<br/>";

    }

} else {

    echo "0 结果";

}

3. 插入MySQL数据库

插入(INSERT)MySQL数据库时,可以使用query()函数或prepare()和execute()函数。其中,query()函数返回布尔值,表示插入操作是否成功。

$sql = "INSERT INTO myTable (name, age, hobby) VALUES ('John', '18', 'swimming')";

if ($conn->query($sql)) {

    echo "新记录插入成功";

} else {

    echo "Error: " . $sql . "<br>" . $conn->errorInfo()[2];

}

4. 更新MySQL数据库

更新(UPDATE)MySQL数据库时,可以使用query()函数或prepare()和execute()函数。其中,query()函数返回布尔值,表示更新操作是否成功。

$sql = "UPDATE myTable SET age='20' WHERE name='John'";

if ($conn->query($sql)) {

    echo "记录更新成功";

} else {

    echo "Error: " . $sql . "<br>" . $conn->errorInfo()[2];

}

5. 删除MySQL数据库

删除(DELETE)MySQL数据库时,可以使用query()函数或prepare()和execute()函数。其中,query()函数返回布尔值,表示删除操作是否成功。

$sql = "DELETE FROM myTable WHERE name='John'";

if ($conn->query($sql)) {

    echo "记录删除成功";

} else {

    echo "Error: " . $sql . "<br>" . $conn->errorInfo()[2];

}

四、MySQLi和PDO扩展的优缺点

MySQLi扩展和PDO扩展各有优缺点。根据实际业务场景需求,可以选择适用的扩展。

1. MySQLi扩展的优缺点

优点:

- 支持MySQL 4.1及以上版本的特性;

- 支持MySQL编程中的面向对象和面向过程两种编程模式;

- 查询速度较快。

缺点:

- 只支持MySQL数据库;

- 查询结果需要手动处理,开发效率较低;

- 代码容易出现SQL注入漏洞。

2. PDO扩展的优缺点

优点:

- 支持多种数据库,包括MySQL、Oracle、PostgreSQL和SQLite等;

- 简化了数据访问层的编程,提高了开发效率;

- 防止SQL注入漏洞。

缺点:

- 不支持MySQL编程中的面向对象和面向过程两种编程模式;

- 查询速度相对较慢。

总的来说,在实际开发中,如果开发的应用只需要支持一种数据库(如MySQL),使用MySQLi扩展会更为简单和高效;而如果需要支持多种数据库,或需要更高的安全性,使用PDO扩展是更好的选择。