我已经阅读了参数化查询是如何预防 SQL 注入的,但令我惊讶的是,它的实现似乎比我想象的要复杂。
我尝试使用参数化查询在 PHP 中使用 mysqli 执行一个简单的 SELECT 语句,但我收到了一个致命的 PHP 错误,指出我在尝试检索查询结果时调用了一个未知方法。谷歌搜索后,它指出我需要mysqlnd
安装并启用才能检索结果。我还发现mysqlnd
应该默认安装在 PHP 5.4 或更高版本上。不过,我目前使用的是 5.4.3,所以我希望它可以工作。
首先,我是否需要 mysqlnd
使用参数化查询,或者这只需要更高级的用户和查询?有没有可以在没有 mysqlnd 的情况下使用的方法来检索结果?其次,如果我确实需要它,如何在我的 PHP 中启用它?
PHP:
$stmt = $con->prepare("SELECT some_id FROM some_table WHERE name = ? AND user_id = '$user_id'");
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with result
}
错误:
PHP 致命错误:调用未定义的方法 mysqli_stmt::get_result()