PHP中SQLi参数化查询是否需要mysqlnd?
我已经读过关于防止SQL注入的参数化查询是如何向前发展的,但是令我惊讶的是,它的实现似乎比我想象的要复杂 我尝试使用参数化查询在PHP中使用mysqli执行一个简单的SELECT语句,我收到一个致命的PHP错误,说明我在尝试检索查询结果时调用了一个未知方法。在谷歌搜索之后,它声明我需要安装并启用mysqlndPHP中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来使用参数化查
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添加了代码和错误消息。