MYSQL delete 语句删除了太多行
MYSQL delete statement deletes too many rows
我的 MYSQL 数据库中有一个 table 供用户使用,如下所示:
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;
用户登录时firebase提供的uid(字符串如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";
}
当我这样做时,它会删除太多用户。我尝试根据电子邮件而不是 UID 删除,它删除了所有用户。
这里:
$memberDelete->bindParam(':uid', $uid, PDO::PARAM_INT);
您将参数绑定为一个整数,而显然它是一个字符串。这会生成一系列隐式转换,最终会删除您想要删除的更多行。
相反,您想要:
$memberDelete->bindParam(':uid', $uid, PDO::PARAM_STR);
我的 MYSQL 数据库中有一个 table 供用户使用,如下所示:
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;
用户登录时firebase提供的uid(字符串如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";
}
当我这样做时,它会删除太多用户。我尝试根据电子邮件而不是 UID 删除,它删除了所有用户。
这里:
$memberDelete->bindParam(':uid', $uid, PDO::PARAM_INT);
您将参数绑定为一个整数,而显然它是一个字符串。这会生成一系列隐式转换,最终会删除您想要删除的更多行。
相反,您想要:
$memberDelete->bindParam(':uid', $uid, PDO::PARAM_STR);