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();