[英]MYSQL delete statement deletes too many rows
我的 MYSQL 數據庫中有一個用戶表,如下所示:
CREATE TABLE `myDatabase`.`user` (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR(250) NOT NULL ,
`uid` VARCHAR(250) NOT NULL ,
`email` VARCHAR(250) NOT NULL ,
`user_type` VARCHAR(250) NOT NULL ,
PRIMARY KEY (`id`)) ENGINE = InnoDB;
uid 由 firebase 在用戶登錄時提供(如 3LmgcBeCUNW1lfMKCQcoI8Xkxai1 或 DrFblVatVdacokhcQCuwb8DK13q1 等字符串。
我的項目有一個調用查詢的刪除用戶選項:
public function deleteProfile($uid) {
$memberDelete = $this->_db->prepare("DELETE FROM user WHERE uid = :uid");
$memberDelete->bindParam(':uid',$uid,PDO::PARAM_INT);
$resp = $memberDelete->execute();
if(!$resp) {
throw new PDOException('member couldn't be removed');
}
$memberDelete->closeCursor();
return "member successfully removed";
}
當我這樣做時,它會刪除太多用戶。 我嘗試基於 email 而不是 UID 刪除,它刪除了所有用戶。
這里:
$memberDelete->bindParam(':uid', $uid, PDO::PARAM_INT);
您將參數綁定為 integer,而顯然它是一個字符串。 這會生成一系列隱式轉換,最終會刪除您想要的更多行。
相反,你想要:
$memberDelete->bindParam(':uid', $uid, PDO::PARAM_STR);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.