PHP中SQLi参数化查询是否需要mysqlnd?

PHP中SQLi参数化查询是否需要mysqlnd?,php,web-applications,mysqli,dynamic-queries,mysqlnd,Php,Web Applications,Mysqli,Dynamic Queries,Mysqlnd,我已经读过关于防止SQL注入的参数化查询是如何向前发展的,但是令我惊讶的是,它的实现似乎比我想象的要复杂 我尝试使用参数化查询在PHP中使用mysqli执行一个简单的SELECT语句,我收到一个致命的PHP错误,说明我在尝试检索查询结果时调用了一个未知方法。在谷歌搜索之后,它声明我需要安装并启用mysqlndmysqlnd来检索结果。我还发现默认情况下应该在PHP5.4或更高版本上安装mysqlnd。但我目前正在使用5.4.3,所以我希望它能正常工作 首先,我是否需要mysqlnd来使用参数化查

我已经读过关于防止SQL注入的参数化查询是如何向前发展的,但是令我惊讶的是,它的实现似乎比我想象的要复杂

我尝试使用参数化查询在PHP中使用mysqli执行一个简单的SELECT语句,我收到一个致命的PHP错误,说明我在尝试检索查询结果时调用了一个未知方法。在谷歌搜索之后,它声明我需要安装并启用mysqlnd
mysqlnd来检索结果。我还发现默认情况下应该在PHP5.4或更高版本上安装
mysqlnd
。但我目前正在使用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()


如果你看一下手册,它确实说它需要
mysqlnd
扩展名:

仅适用于mysqlnd

如果您只是想从
SELECT
查询中获得结果,那么可以使用输出参数绑定,其基础是。这似乎不需要额外的扩展

在中有一些关于如何执行此操作的示例。我想
get\u result
的好处在于,您可以在不绑定列的情况下读取列。您应该能够在
php.ini
中启用该功能-默认情况下,它是否已被注释掉


我个人并没有使用过MySQLi,正如我所看到的,在帮助解决堆栈溢出方面,很多人对API感到失望。我一直在使用PDO/mysql,没有理由切换。也许值得一试,看看您是否喜欢。

我们可以看看您的代码,编辑到问题中吗?什么方法未知?@halfer添加了代码和错误消息。