Php 由于未安装MySQLnd,MySQLi准备的语句显示错误
我使用这段代码在MySQLi中运行select语句Php 由于未安装MySQLnd,MySQLi准备的语句显示错误,php,mysql,mysqli,Php,Mysql,Mysqli,我使用这段代码在MySQLi中运行select语句 $stmt = $mysqli->prepare('SELECT * FROM admin WHERE forename = ? and surname = ? '); $stmt->bind_param('vv', $forename, $surname); $foremame = "Forename"; $surname = "Surname"; $stmt->execute(); $result = $stmt-&
$stmt = $mysqli->prepare('SELECT * FROM admin WHERE forename = ? and surname = ? ');
$stmt->bind_param('vv', $forename, $surname);
$foremame = "Forename";
$surname = "Surname";
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row["sequence"];
}
$stmt -> close();
$mysqli -> close();
但我得到了一个致命的错误说:
Fatal error: Call to undefined method mysqli_stmt::get_result()
因为我没有安装MySQLnd,但我无法安装它,因为我使用的是共享web服务器,主机不会安装它
如何使用MySQLi prepared语句而不必安装MySQLnd,因为我想防止SQL注入攻击您可以使用
$stmt->bind_result()
将结果绑定到变量,然后$stmt->fetch()
将结果提取到绑定的变量中
$stmt->execute();
$stmt->bind_result($var1, $var2, $var3, ...); // Use more meaningful variable names
while ($stmt->fetch()) {
echo $var3; // to get the third column in the results
}
我强烈建议在
SELECT
子句中明确列出列名称,而不是*
,因为这种访问结果的方法取决于列的特定顺序。每个人都在告诉我不要使用MySQL,因为MySQL已被弃用,所以我尝试学习一些新的东西,没有人帮助。我在互联网上也找不到任何关于它的信息,因为我只是得到了同样的错误。如果你使用PDO,你最终会得到同样的依赖关系。您还可以获得新的主机,在那里您可以选择您的依赖项;)@你可能只是运气不好。MySQL对于简单的Web开发没有什么错。正如他们所说,仇恨者会憎恨。这只是个人口味。只有在某些“极端”情况下,选择不使用MySQL才可能是关键。不要犹豫使用它@杰西卡为什么不能?准备好的陈述不需要ND司机。@Barmar你说得对-我不知道为什么他认为他需要ND。他需要MySQLi,但事实是,他无法控制自己的环境,而且在没有安装MySQLi的情况下,您无法使用这样的库。这就是重点。看看文档中的示例。我添加了一个示例。但是,当你刚接触某样东西的时候,文档不是你首先要看的地方吗?如果没有,它应该是。是否有一个通用函数可以用于不需要指定$var1,$var2…
?@luke如果您有MYSQLND
驱动程序,您可以在执行准备好的语句后使用$stmt->fetch_assoc()
获取关联数组。