【发布时间】:2015-03-01 06:05:23
【问题描述】:
我已经阅读了参数化查询是如何预防 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()
【问题讨论】:
-
我们可以看看你的代码,编辑成问题吗?什么方法不知道?
-
@halfer 添加了代码和错误消息。
标签: php web-applications mysqli dynamic-queries mysqlnd