PHP:数据库操作(MySQLi)

在 PHP 中,可以使用 MySQLi(MySQL Improved)扩展来进行数据库操作。

一、连接数据库

1. 创建连接:

使用mysqli_connect()函数建立与 MySQL 数据库的连接。这个函数需要传入数据库服务器地址、用户名、密码和数据库名称等参数。

$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检查连接是否成功
if (!$conn) {
    die("Connection failed: ". mysqli_connect_error());
}

二、执行查询

1. 查询数据:

使用mysqli_query()函数执行 SQL 查询语句。这个函数接受两个参数,第一个是数据库连接对象,第二个是 SQL 查询语句。

例如,查询数据库中的所有用户信息:

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    // 输出数据
    while ($row = mysqli_fetch_assoc($result)) {
        echo "id: ". $row["id"]. " - Name: ". $row["name"]. "<br>";
    }
} else {
    echo "0 results";
}

2. 插入数据:

例如,插入一条新的用户记录:

$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')";
if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: ". $sql. "<br>". mysqli_error($conn);
}

3. 更新数据:

例如,更新一个用户的电子邮件地址:

$sql = "UPDATE users SET email='new_email@example.com' WHERE id=1";
if (mysqli_query($conn, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: ". mysqli_error($conn);
}

4. 删除数据:

例如,删除一个用户记录:

$sql = "DELETE FROM users WHERE id=1";
if (mysqli_query($conn, $sql)) {
    echo "Record deleted successfully";
} else {
    echo "Error deleting record: ". mysqli_error($conn);
}

三、预处理语句

1. 防止 SQL 注入:

使用预处理语句可以有效地防止 SQL 注入攻击。预处理语句将 SQL 语句和参数分开处理,确保参数的值不会被解释为 SQL 代码。

例如,使用预处理语句插入数据:

$sql = "INSERT INTO users (name, email) VALUES (?,?)";
$stmt = mysqli_prepare($conn, $sql);
// 绑定参数
$name = "Jane Doe";
$email = "jane@example.com";
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
// 执行预处理语句
mysqli_stmt_execute($stmt);
echo "New record created successfully";

2. 查询数据的预处理语句:

例如,使用预处理语句查询数据:

$sql = "SELECT * FROM users WHERE id=?";
$stmt = mysqli_prepare($conn, $sql);
// 绑定参数
$id = 1;
mysqli_stmt_bind_param($stmt, "i", $id);
// 执行预处理语句
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (mysqli_num_rows($result) > 0) {
    // 输出数据
    while ($row = mysqli_fetch_assoc($result)) {
    echo "id: ". $row["id"]. " - Name: ". $row["name"]. "<br>";
    }
} else {
    echo "0 results";
}

四、错误处理

1. 检查错误:

在执行数据库操作时,应该始终检查是否有错误发生。可以使用mysqli_error()函数获取最近一次操作的错误信息。

$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'invalid_email')";

if (!mysqli_query($conn, $sql)) {

echo "Error: ". mysqli_error($conn);

}

2. 异常处理:

可以使用try-catch块来捕获数据库操作中的异常。这样可以更好地处理错误,并提供更友好的错误消息。

try {
    $sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'invalid_email')";
    mysqli_query($conn, $sql);
} catch (mysqli_sql_exception $e) {
    echo "Error: ". $e->getMessage();
}

五、关闭连接

1. 关闭连接:

在完成数据库操作后,应该关闭数据库连接以释放资源。可以使用mysqli_close()函数关闭连接。

mysqli_close($conn);

使用 MySQLi 扩展进行数据库操作可以提供更安全、高效的方式来与 MySQL 数据库进行交互。通过正确使用连接、查询、预处理语句和错误处理,可以确保你的 PHP 应用程序与数据库的交互更加稳定和可靠。

PHP编程语言基础