由于未安装MySQLnd,MySQLi准备了显示错误的语句

时间:2013-12-30 22:30:15

标签: 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->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注入攻击

1 个答案:

答案 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子句而不是*中明确列出列名称,因为这种访问结果的方法取决于列的特定顺序。