📜  sql 查询传递 - PHP (1)

📅  最后修改于: 2023-12-03 15:20:17.225000             🧑  作者: Mango

SQL 查询传递 - PHP

在 PHP 中执行 SQL 查询是非常常见的任务。可以通过使用 PHP 提供的各种数据库扩展或库来执行 SQL 查询,并从数据库中检索所需的数据。

以下是在 PHP 中执行 SQL 查询的一些常见方法和示例代码。

使用PDO(支持多种数据库)
<?php
// 连接到数据库
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'username';
$password = 'password';
$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
$pdo = new PDO($dsn, $username, $password, $options);

// 准备和执行查询
$sql = 'SELECT * FROM users WHERE role = :role';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':role', 'admin');
$stmt->execute();

// 获取结果
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 打印结果
foreach ($result as $row) {
    echo $row['username'] . ' - ' . $row['email'] . PHP_EOL;
}
使用mysqli(适用于MySQL数据库)
<?php
// 连接到数据库
$mysqli = new mysqli('localhost', 'username', 'password', 'test');

// 检查连接是否成功
if ($mysqli->connect_errno) {
    echo 'Failed to connect to MySQL: ' . $mysqli->connect_error;
    exit;
}

// 准备和执行查询
$sql = 'SELECT * FROM users WHERE role = ?';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', 'admin');
$stmt->execute();

// 获取结果
$result = $stmt->get_result();

// 打印结果
while ($row = $result->fetch_assoc()) {
    echo $row['username'] . ' - ' . $row['email'] . PHP_EOL;
}

// 关闭连接
$mysqli->close();
使用PDO和预处理语句(避免SQL注入)
<?php
// 连接到数据库
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'username';
$password = 'password';
$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
$pdo = new PDO($dsn, $username, $password, $options);

// 准备和执行查询
$role = 'admin';
$sql = 'SELECT * FROM users WHERE role = :role';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':role', $role);
$stmt->execute();

// 获取结果
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 打印结果
foreach ($result as $row) {
    echo $row['username'] . ' - ' . $row['email'] . PHP_EOL;
}

上面的示例代码展示了使用 PDO 和 mysqli 扩展执行 SQL 查询的基本方法。根据所连接的数据库类型和个人偏好,选择适合自己的方法。

无论使用哪种方法,都需要注意防止 SQL 注入攻击。请始终使用预处理语句(绑定参数)来处理用户提供的输入值,这有助于确保查询的安全性。