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

PHP中的数据库连接和查询函数

发布时间:2023-06-17 12:44:20

在Web应用程序中,使用数据库大多是必须的。一旦需要使用数据库,就必须使用一种编程语言来管理和查询数据库。PHP是一种流行的用于Web开发的编程语言,而MySQL是最常用的关系型数据库之一,两者之间的配合非常出色。在本文中,我们将学习如何在PHP中连接到MySQL数据库并使用查询函数来与数据库进行通信。

1. 连接MySQL数据库

连接MySQL数据库有两种方法:MySQLi(MySQL improved)和PDO(PHP数据对象)。MySQLi是PHP内置的函数,但它仅适用于MySQL数据库。PDO是一种更通用的选择,支持多种数据库类型。

使用MySQLi连接到MySQL数据库:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
// 建立连接
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
 
// 检查连接是否成功
if (!$connect) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
 
?>

使用PDO连接到MySQL数据库:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
try {
    // 建立连接
    $connect = new PDO("mysql:host=$hostname;dbname=$databaseName", $username, $password);
    // 设置 PDO 错误模式为异常
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
 
?>

2. 查询数据

有多种方法可以在MySQL数据库中查询数据。我们将使用MySQLi和PDO使用SELECT语句查询数据的基本方法来说明。SELECT语句可用于从表中检索数据。

使用MySQLi查询数据:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
// 建立连接
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
 
// 检查连接是否成功
if (!$connect) {
    die("Connection failed: " . mysqli_connect_error());
}
 
// 查询数据
$sql = "SELECT id, firstname, lastname, email FROM users";
$result = mysqli_query($connect, $sql);
 
// 检查结果集是否是空的
if (mysqli_num_rows($result) > 0) {
    // 输出数据
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}
 
// 断开连接
mysqli_close($connect);
 
?>

使用PDO查询数据:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
try {
    // 建立连接
    $connect = new PDO("mysql:host=$hostname;dbname=$databaseName", $username, $password);
    // 设置 PDO 错误模式为异常
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // 查询数据
    $sql = "SELECT id, firstname, lastname, email FROM users";
    $stmt = $connect->prepare($sql); 
    $stmt->execute();
 
    // 设置结果集为关联数组
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
 
    // 输出数据
    foreach($stmt->fetchAll() as $row) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " - Email: " . $row["email"]. "<br>";
    }
} catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
 
// 断开连接
$connect = null;
 
?>

3. 插入数据

使用MySQLi和PDO,我们可以通过INSERT语句将数据插入MySQL数据库中的表中。INSERT INTO语句用于向表中添加新行。

使用MySQLi插入数据:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
// 建立连接
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
 
// 检查连接是否成功
if (!$connect) {
    die("Connection failed: " . mysqli_connect_error());
}
 
// 插入数据
$sql = "INSERT INTO users (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')";
 
if (mysqli_query($connect, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($connect);
}
 
// 断开连接
mysqli_close($connect);
 
?>

使用PDO插入数据:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
try {
    // 建立连接
    $connect = new PDO("mysql:host=$hostname;dbname=$databaseName", $username, $password);
    // 设置 PDO 错误模式为异常
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // 插入数据
    $sql = "INSERT INTO users (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')";
    // 使用 exec() 方法,因为没有结果返回
    $connect->exec($sql);
    echo "New record created successfully";
} catch(PDOException $e) {
    echo $sql . "<br>" . $e->getMessage();
}
 
// 断开连接
$connect = null;
 
?>

4. 更新数据

使用MySQLi和PDO,我们可以通过UPDATE语句更新MySQL数据库中的表中的数据。UPDATE语句用于修改表中的现有行。

使用MySQLi更新数据:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
// 建立连接
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
 
// 检查连接是否成功
if (!$connect) {
    die("Connection failed: " . mysqli_connect_error());
}
 
// 更新数据
$sql = "UPDATE users SET email='john.doe@example.com' WHERE id=1";
 
if (mysqli_query($connect, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . mysqli_error($connect);
}
 
// 断开连接
mysqli_close($connect);
 
?>

使用PDO更新数据:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
try {
    // 建立连接
    $connect = new PDO("mysql:host=$hostname;dbname=$databaseName", $username, $password);
    // 设置 PDO 错误模式为异常
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // 更新数据
    $sql = "UPDATE users SET email='john.doe@example.com' WHERE id=1";
    // 使用 exec() 方法,因为没有结果返回
    $connect->exec($sql);
    echo "Record updated successfully";
} catch(PDOException $e) {
    echo $sql . "<br>" . $e->getMessage();
}
 
// 断开连接
$connect = null;
 
?>

5. 删除数据

我们使用MySQLi和PDO,可以通过DELETE语句从MySQL数据库中的表中删除数据。DELETE语句用于删除表中的行。

使用MySQLi删除数据:

<?php
 
$hostname = "localhost";
$username = "root";
$password = "password";
$databaseName = "mydatabase";
 
// 建立连接
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
 
// 检查连接是否成功
if (!$connect) {
    die("Connection failed: " . mysqli_connect_error());
}
 
// 删除数据
$sql = "DELETE FROM users WHERE id=1";
 
if (mysqli_query($connect, $sql)) {
    echo "Record deleted successfully";
} else {
    echo "Error deleting record: " . mysqli_error($connect);
}
 
// 断开连接
mysqli_close($connect);
 
?>

使用PDO删除数据: