首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP致命错误:调用未定义的函数mysqli_stmt_get_result()

PHP致命错误:调用未定义的函数mysqli_stmt_get_result()
EN

Stack Overflow用户
提问于 2017-07-10 06:56:35
回答 4查看 8.6K关注 0票数 5

我一直收到错误:调用未定义的函数mysqli_stmt_get_result()。我使用的是PHP 5.6版本,并且已经在我的主机提供商c面板中启用了扩展mysqlind,但是我不明白为什么我仍然收到这个错误。我研究发现,每次我都需要启用mysqli才能使用mysqli_stmt_get_result。有人能帮助/教导我做错了什么吗?谢谢。

SIGNUP.PHP:

代码语言:javascript
复制
<?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);
    ?>
EN

回答 4

Stack Overflow用户

发布于 2018-07-01 03:09:58

为了防止其他人尖叫几个小时,试图弄清楚为什么当您启用mysqlnd本机驱动程序时,这不起作用。这是因为您需要确保启用两个本机驱动器。如果您希望使用此功能,则需要在您的服务器上启用mysqlnd和nd_mysqli。

否则,仅仅启用mysqlnd本机驱动程序并不包括mysqli_stmt_get_result函数,因为它显然驻留在nd_mysqli本机驱动程序中。不幸的是,大多数文档只讨论过mysqlnd本机驱动程序。

一旦您启用了这两个本机驱动程序,该函数就会按照文档中的说明工作。

哦,在我的托管服务器上,你需要禁用/取消选中mysqli来启用nd_mysqli。

票数 10
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2020-05-06 10:56:14

您正在使用程序方式来获取数据。

如果可能,您可以使用面向对象的方式,这样就不需要在服务器上启用nd_mysqli。

代码语言:javascript
复制
$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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45001819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档