我一直收到错误:调用未定义的函数mysqli_stmt_get_result()。我使用的是PHP 5.6版本,并且已经在我的主机提供商c面板中启用了扩展mysqlind,但是我不明白为什么我仍然收到这个错误。我研究发现,每次我都需要启用mysqli才能使用mysqli_stmt_get_result。有人能帮助/教导我做错了什么吗?谢谢。
SIGNUP.PHP:
<?php
session_start();
include '../dbh.php';
$respond = array(
'status' => true,
'message' => 'There was an error',
'redirect',
'errors'
);
if (isset($_POST['submit'])) {
$first = $_POST['first'];
$last = $_POST['last'];
$email = $_POST['email'];
$pwd = $_POST['pwd'];
$errorEmpty = false;
$errorEmail = false;
if (empty($first) || empty($last) || empty($email) || empty($pwd)) {
$respond['errors'][] = "Please fill out all fields!";
$respond['errorEmpty'] = true;
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$respond['errors'][] = "Please enter a valid email address!";
$respond['errorEmail'] = true;
} else {
$sql = "SELECT email FROM user WHERE email= ? ";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, 's', $email);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt); //This is where I getting my error
$num_rows = mysqli_num_rows($result);
if ($num_rows > 0) {
$respond['errors'][] = "That email address already exists!";
$respond['errorEmail'] = true;
}
else {
$encryptpwd = password_hash($pwd, PASSWORD_DEFAULT);
$sql = "INSERT INTO user (first, last, email, pwd) VALUES (?,?,?,?)";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, 'ssss', $first, $last, $email, $password_hash);
if (mysqli_stmt_execute($stmt)) {
$userID = mysqli_insert_id($conn);
$status = 1;
$sql2 = "INSERT INTO profileImg (email, status) VALUES(?,?)";
$stmt2 = mysqli_prepare($conn, $sql2);
mysqli_stmt_bind_param($stmt2, 'si', $email);
mysqli_stmt_execute($stmt);
$_SESSION['id'] = $userID;
$respond['redirect'] = "../profile.php?id=$userID";
}
}
}
}
echo json_encode($respond);
?>
发布于 2018-07-01 03:09:58
为了防止其他人尖叫几个小时,试图弄清楚为什么当您启用mysqlnd本机驱动程序时,这不起作用。这是因为您需要确保启用两个本机驱动器。如果您希望使用此功能,则需要在您的服务器上启用mysqlnd和nd_mysqli。
否则,仅仅启用mysqlnd本机驱动程序并不包括mysqli_stmt_get_result函数,因为它显然驻留在nd_mysqli本机驱动程序中。不幸的是,大多数文档只讨论过mysqlnd本机驱动程序。
一旦您启用了这两个本机驱动程序,该函数就会按照文档中的说明工作。
哦,在我的托管服务器上,你需要禁用/取消选中mysqli来启用nd_mysqli。
发布于 2018-12-04 08:02:48
我也遇到了同样的问题("PHP致命错误:调用未定义的函数mysqli_stmt_get_result()“),所需要做的就是更改php的版本服务器也被自动设置为7.2,并确保nd_mysqli被检查。请注意,mysqlnd是禁忌,而不是nd-mysqli。
步骤:
在cpanel中找到更改php版本部分
选择当前版本7.2的最高版本的php
确保从扩展列表中选中nd_mysqli
如果出现任何错误,请尝试取消选中mysqlnd
发布于 2020-05-06 10:56:14
您正在使用程序方式来获取数据。
如果可能,您可以使用面向对象的方式,这样就不需要在服务器上启用nd_mysqli。
$sql = "SELECT * FROM users WHERE id=?"; // SQL with parameters
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result(); // get the mysqli result
$user = $result->fetch_assoc(); // fetch data
https://stackoverflow.com/questions/45001819
复制相似问题