在 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中文网其他相关文章!