【问题标题】:Undefined method mysqli_stmt::get_result() with fetch_assoc()带有 fetch_assoc() 的未定义方法 mysqli_stmt::get_result()
【发布时间】:2016-01-18 05:26:27
【问题描述】:

我正在登录和注册 android 项目。我为这个 PHP 错误尝试了不同的解决方案,但没有一个能帮到我。

我收到此错误:

在第 59 行

...中调用未定义的方法 mysqli_stmt::get_result()

第 59 行是:$user = $stmt->get_result()->fetch_assoc();

我读到如果我没有驱动程序,我应该使用 bindfetch 代替,但我不知道如何。

我的功能:

public function getUserByEmailAndPassword($email, $password) {

    $stmt = $this->conn->prepare("SELECT * FROM seemidavajaon WHERE email = ?");

    $stmt->bind_param("s", $email);

    if ($stmt->execute()) {
        $user = $stmt->get_result()->fetch_assoc();
        $stmt->close();
        return $user;
    } else {
        return NULL;
    }
}

【问题讨论】:

  • manual 表示(PHP 5 >= 5.3.0) - 你使用的是旧版本吗?
  • @VolkerK 我怎么知道?
  • 例如通过<?php echo phpversion();
  • @VolkerK 现在是 5.6.13。我在虚拟服务器上托管。
  • 不知道,抱歉。

标签: php android mysqli server mysqlnd


【解决方案1】:

折腾了一天终于搞定了。

public function getUserByEmailAndPassword($email, $password) {

    $stmt = $this->conn->prepare("SELECT * FROM seemidavajaon WHERE email = ?");

    $stmt->bind_param('s', $email);

    if ($stmt->execute()) {
        $user = $this->funktsioon( $stmt );
        $stmt = NULL;


        return $user;
    } else {
        return NULL;
    }
}

使用名为“funktsioon”的函数

public function funktsioon( $stmt ) {
    $RESULT = array();
    $stmt->store_result();
    for ( $i = 0; $i < $stmt->num_rows; $i++ ) {
        $Metadata = $stmt->result_metadata();
        $PARAMS = array();
        while ( $Field = $Metadata->fetch_field() ) {
            $PARAMS[] = &$RESULT[ $i ][ $Field->name ];
        }
        call_user_func_array( array( $stmt, 'bind_result' ), $PARAMS );
        $stmt->fetch();
    }
    return $RESULT;
}

它不会检查密码是否正确,所以这是一个新问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多