首页  >  文章  >  数据库  >  如何将 MySQL 代码转换为 PDO 语句?

如何将 MySQL 代码转换为 PDO 语句?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 20:51:02805浏览

How do I convert MySQL code to PDO statements?

如何将 MySQL 代码转换为 PDO 语句?

在 PHP 中使用数据库时,经常需要将 MySQL 代码转换为 PDO(PHP 数据对象)语句。 PDO 提供了一种与数据库交互的一致且安全的方式,无论底层驱动程序如何。本指南将向您展示如何将 MySQL 代码转换为 PDO 语句。

建立连接

第一步是使用 PDO 与数据库建立连接。以下是如何执行此操作的示例:

$db_host = "127.0.0.1";
$db_name = "database_name";
$db_user = "username";
$db_pass = "password";

$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);

更新代码

建立 PDO 连接后,您可以开始将 MySQL 代码转换为 PDO 语句。

使用 mysqli 和 PDO 准备的语句

准备好的语句是执行包含用户提供的数据的查询的安全方法。它们通过在执行之前将数据绑定到查询来防止 SQL 注入。

这是 MySQLi 中准备好的语句的示例:

$sql = "SELECT * FROM users WHERE username = ? AND password = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$result = $stmt->get_result();

这是 PDO 中的相同查询:

$sql = "SELECT * FROM users WHERE username = ? AND password = ?";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(1, $username, PDO::PARAM_STR);
$stmt->bindParam(2, $password, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();

更新的代码

以下是如何将问题中的 MySQL 代码转换为 PDO 语句的示例:

$id = $_SESSION['u_id'] ?? NULL;

if ($id) {
    $sql = "SELECT email FROM users WHERE u_id = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$id]);
    $email = $stmt->fetchColumn();
}

$email = $email ?? "";
$suggestions = selectAll($table);

$optionOne = $_POST['optionOne'] ?? "";
$optionTwo = $_POST['optionTwo'] ?? "";
$newSuggestion = $_POST['new-suggestion'] ?? "";

if ($newSuggestion && $id && $email && $optionOne && $optionTwo) {
    $sql = "INSERT INTO suggestions (user_id, email, option_1, option_2) VALUES (?, ?, ?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$id, $email, $optionOne, $optionTwo]);
} else {
    echo "All options must be entered";
}

摘要

将 MySQL 代码转换为 PDO 语句是一个相对简单的过程。通过遵循本指南中概述的步骤,您可以轻松地将代码迁移到 PDO 并利用其优势,例如改进的安全性和性能。

以上是如何将 MySQL 代码转换为 PDO 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn