Php 中尚不允许属性访问

Php 中尚不允许属性访问,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我有一个从数据库中删除帐户的简单函数。我是这样写的 public function removeAccount($email) { $response = array('code' => 0, 'error' => false); $stmt = $this->conn->prepare("SELECT id FROM user WHERE email = ?"); $stmt->bind_param("s", $email); $s

我有一个从数据库中删除帐户的简单函数。我是这样写的

public function removeAccount($email) {
    $response = array('code' => 0, 'error' => false);
    $stmt = $this->conn->prepare("SELECT id FROM user WHERE email = ?");
    $stmt->bind_param("s", $email);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($result->num_rows) {
        $user   =  $result->fetch_assoc();
        $id = $user['id'];
        $stmt->close();

        $stmt = $this->conn->prepare("DELETE FROM number_list WHERE user_id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $stmt->close();

        $stmt = $this->conn->prepare("DELETE FROM number_status WHERE user_id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $stmt->close();

        $stmt = $this->conn->prepare("INSERT INTO old_user(email,serial,premium) SELECT email, device_id, membership FROM user WHERE id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $stmt->close();

        $stmt = $this->conn->prepare("DELETE FROM user WHERE id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $stmt->close();

        if ($stmt->affected_rows) {
            $response["code"] = 1;
        }
    }

    return $response;
}
它在下面给我警告

if ($stmt->affected_rows) {

我一直在寻找解决问题的方法,但不知道哪里出了问题,什么能解决问题。请检查并让我知道是否有人能知道这件事。非常感谢。

您正在尝试从关闭语句中获取受影响的行数。 而不是

$stmt->execute();
$stmt->close();
if ($stmt->affected_rows) {
    $response["code"] = 1;
}
使用

在本例中,我们检查了是否有行被更新。以下是
mysqli::$infected_rows
返回值的用法供参考

-1-query返回错误;如果
execute()

0-在
UPDATE
上没有更新记录,没有与
WHERE
子句匹配的行,或者没有执行任何查询


大于0-返回受影响的行数;与
mysqli\u结果相比:$num\u rows
对于
SELECT

此错误有很多原因,但我今天遇到的一个原因是我在任何地方都找不到文档记录的

我有两(2)个相同虚拟机的副本在运行,它们都以某种我不太了解的方式竞争,但进入VirtualBox并关闭其中一个解决了问题


我知道这是一个模糊的场景,但如果其他人遇到同样的情况,我希望我的回答能阻止他们像我一样在上面浪费时间。

我不认为在调用
$stmt->close()
后,您可以使用
$stmt->受影响的行。在调用
close()
@Nick之前,您应该记录受影响行的值,您是对的。谢谢。它解决了我的问题。
$stmt->execute();
$num_affected_rows = $stmt->affected_rows;
$stmt->close();
if ($num_affected_rows) {
    $response["code"] = 1;
}
$stmt = $this->conn->prepare("DELETE FROM user WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
if($stmt->affected_rows > 0) { $response["code"] = 1; }
$stmt->close();