我有一个简单的功能从我的数据库删除帐户。我把它写在下面
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) {
我一直在寻找解决问题的方法,但不知道什么是错的,什么可以解决它。请检查一下,如果有人知道的话,请告诉我。谢谢。
3条答案
按热度按时间63lcw9qa1#
造成这个错误的原因有很多,但我今天遇到的是一个我在任何地方都找不到的原因。
我有两(2)个相同的虚拟机运行的副本,他们都在以某种方式竞争,我不太明白解释,但进入virtualbox并关闭其中一个解决了问题。
我知道这是一个模糊的场景,但如果有人遇到同样的情况,我希望我的回答能阻止他们像我一样在上面浪费时间。
ergxz8rk2#
在本例中,我们检查了是否有行得到了更新。以下是
mysqli::$affected_rows
返回值。-1-查询返回错误;冗余,如果已经有错误处理
execute()
0-没有更新的记录UPDATE
,没有与WHERE
子句或未执行任何查询大于0-返回受影响的行数;相当于
mysqli_result::$num_rows
为了SELECT
wko9yo5t3#
您正在尝试从关闭的语句中获取受影响的行数。而不是
使用