MySQLi 准备语句:全面概述
MySQLi 准备语句为数据库交互提供增强的安全性和效率。然而,开始使用它们可能具有挑战性。
错误:使用未绑定语句
在提供的代码中,错误源于尝试执行准备好的语句“$ stmt”而不将参数绑定到它。 MySQLi 的“mysqli_stmt_prepare()”方法返回一个表示准备好的语句的对象,但使用“mysqli_stmt_bind_param()”绑定占位符是执行它之前的关键步骤。
准备语句绑定的语法:
$stmt->bind_param('data_type', $variable);
在此示例中,数据类型为's'(字符串)和 'i'(整数),后跟包含要插入的值的 PHP 变量。
$name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
一旦绑定了参数,就可以继续执行:
$stmt->execute();
完整示例
这是一个涵盖连接、插入和使用预准备语句进行错误处理的选择:
connect_error) { die('Failed to connect: ' . $mysqli->connect_error); } // Insertion $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?, ?)"); $stmt->bind_param('si', $name, $age); $name = 'Bob'; $age = 30; $stmt->execute(); // Selection $stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?"); $stmt->bind_param('s', $name); $name = 'Bob'; $stmt->execute(); $result = $stmt->get_result(); // Fetch and display results while ($row = $result->fetch_assoc()) { printf("%s (%s)\n", $row['name'], $row['age']); } // Closing $stmt->close(); $mysqli->close(); ?>
通过遵循这些指南,您可以在 PHP 和 MySQLi 中有效地利用预准备语句,从而增强安全性和数据库交互效率。
以上是如何有效利用MySQLi预编译语句增强数据库安全性和效率?的详细内容。更多信息请关注PHP中文网其他相关文章!