在 PHP 中创建安全的 MySQL 准备语句
准备语句为数据库查询提供更高的安全性和潜在的性能改进。这是使用 URL 参数的输入在 PHP 中创建安全 MySQL 准备语句的综合指南。
创建准备语句
实例化 MySQLi 连接并使用 mysqli_prepare 准备语句( ):
$db = new mysqli("host","user","pw","database"); $stmt = $db->prepare("SELECT * FROM mytable where userid=? AND category=? ORDER BY id DESC");
绑定参数
使用 mysqli_stmt_bind_param() 将输入参数值绑定到语句占位符:
$userid = intval($_GET['userid']); $category = intval($_GET['category']); $stmt->bind_param('ii', $userid, $category);
执行和获取数据
执行准备好的语句并使用 mysqli_stmt_execute() 检索结果和mysqli_stmt_store_result():
$stmt->execute(); $stmt->store_result();
使用 mysqli_stmt_bind_result() 将列名绑定到变量并迭代结果:
$stmt->bind_result($column1, $column2, $column3); while ($stmt->fetch()) { echo "col1=$column1, col2=$column2, col3=$column3 \n"; }
增强关联的灵活性数组
对于返回多列的查询(例如 SELECT *),您可以使用 stmt_bind_assoc() 函数将结果绑定到关联数组:
$resultrow = array(); stmt_bind_assoc($stmt, $resultrow); while ($stmt->fetch()) { print_r($resultrow); }
性能增强
使用准备好的语句时可以提高同一查询多次执行的性能,但创建和准备语句的开销可能不足以仅在三到四次执行中使用它们。
通过执行以下步骤,您可以确保您的 MySQL 查询安全高效。
以上是如何使用 URL 参数在 PHP 中安全地创建 MySQL 准备语句?的详细内容。更多信息请关注PHP中文网其他相关文章!