为了账号安全,请及时绑定邮箱和手机立即绑定

参数传入任意值都会被删除?

3为什么3,输入任意的id都会被删除吗?

DELIMITER //

CREATE PROCEDURE removeUserById(IN id INT UNSIGNED)

BEGIN

DELETE FROM user WHERE id = id;

END

//

DELIMITER ;

CALL removeUserById(3);

正在回答

1 回答

您好!很高兴回答你的问题。

现在根据你写的代码可以看出,不止你输入3,删除了所有记录,就是你输入任何正数(在范围内的),都会删除所有记录。

因为DELETE FROM user WHERE    id=id;其中前面的id和后面的id是两个字段,虽然我们理解是前者是记录表中的id值,后者是存储过程输入的参数值,但是系统无法识别,现在相当于WHERE给的条件是所有的id均会被删除。

正确的写法:DELETE FROM user WHERE xxx.id=id;其中xxx指的是记录表的名字。

1 回复 有任何疑惑可以回复我~
#1

Adam静栖 提问者

非常感谢!
2017-01-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

参数传入任意值都会被删除?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信