我正在使用此代码在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->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服务器而主机不会安装它。
如何在不必安装MySQLnd的情况下使用MySQLi预处理语句,因为我想防止SQL注入攻击
答案 0 :(得分:1)
您可以使用$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
子句而不是*
中明确列出列名称,因为这种访问结果的方法取决于列的特定顺序。