Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:对file.PHP中的非对象调用成员函数fetch_assoc()_Php_Mysql_Server - Fatal编程技术网

PHP:对file.PHP中的非对象调用成员函数fetch_assoc()

PHP:对file.PHP中的非对象调用成员函数fetch_assoc(),php,mysql,server,Php,Mysql,Server,我正在编写PHP代码,以下是我的代码: public function storeUser($name, $email, $password) { $uuid = uniqid('', true); $hash = $this->hashSSHA($password); $encrypted_password = $hash["encrypted"]; // encrypted password $salt = $hash["s

我正在编写PHP代码,以下是我的代码:

public function storeUser($name, $email, $password) {
    $uuid = uniqid('', true);
    $hash = $this->hashSSHA($password);
    $encrypted_password = $hash["encrypted"]; // encrypted password
    $salt = $hash["salt"]; // salt

    $stmt = $this->conn->prepare("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES(?, ?, ?, ?, ?, NOW())");
    $stmt->bind_param("sssss", $uuid, $name, $email, $encrypted_password, $salt);
    $result = $stmt->execute();
    $stmt->close();

    // check for successful store
    if ($result) {
        $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $user = $stmt->bind_result()->fetch_assoc();
        $stmt->close();

        return $user;
    } else {
        return false;
    }
}
但我收到了这个错误和警告,不知道如何解决它:

PHP致命错误:对file.PHP中的非对象调用成员函数fetch_assoc()

file.php中mysqli_stmt::bind_result()的参数计数错误

返回
bool
。您正试图使用此语法调用
bool::fetch_assoc()


返回
bool
。您正试图使用此语法调用
bool::fetch_assoc()

选项1如果您安装了MySQL本机驱动程序(mysqlnd),则可以使用

$res = $stmt->get_result();
$user = $res->fetch_array(MYSQLI_ASSOC);
更多信息请参见以下示例:

选项2如果否,则将其与
绑定结果一起使用
,有关绑定结果的更多信息:


选项1如果安装了MySQL本机驱动程序(mysqlnd),则可以使用

$res = $stmt->get_result();
$user = $res->fetch_array(MYSQLI_ASSOC);
更多信息请参见以下示例:

选项2如果否,则将其与
绑定结果一起使用
,有关绑定结果的更多信息:


谢谢你的提示。我这样做了,但现在出现了这个错误:PHP致命错误:调用未定义的方法mysqli_stmt::get_result()似乎您的
stmt
有问题,您可以在
$stmt->execute()之后转储
var_dump($stmt)
它给了你什么?我在这里找到了关于这个错误的文章-,并更新了我的答案,你可以再次检查它,你的意思是,使用bind_result(col1,col2),现在我吵架了??我在这里有点困惑,我是php新手,请你解释一下好吗。我这样做了,但现在出现了这个错误:PHP致命错误:调用未定义的方法mysqli_stmt::get_result()似乎您的
stmt
有问题,您可以在
$stmt->execute()之后转储
var_dump($stmt)
它给了你什么?我在这里找到了关于这个错误的文章-,并更新了我的答案,你可以再次检查它,你的意思是,使用bind_result(col1,col2),现在我吵架了??我在这里有点混乱,我是php新手,请你解释一下,好吗
// IMPOTANT: you need to change your sql query to select 
// only columns which you need unique_id, name, email ...
$stmt = $this->conn->prepare("SELECT unique_id, name, email FROM users WHERE email = ?");

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

// list here variables with exact amount of columns which you selecting in your query 
$stmt->bind_result($row_user_id, $row_user_name, $row_user_email);

// In case you expect 1 row 
$stmt->fetch();
var_dump($row_user_id, $row_user_name, $row_user_email);// to see result
$user = array(
     'id' => $row_user_id, 
     'name' => $row_user_name,
     'email' => $row_user_email,
);

// In case you expect many rows use while 
$users = array();
while ($stmt->fetch())
{
   $users[] = array(
        'id' => $row_user_id, 
        'name' => $row_user_name,
        'email' => $row_user_email,
   );
}
var_dump( $users );// to see result