我有一个表,引号,以 UserID 作为主键。我想通过基于 UserID 的查询来隔离用户特定的数据。但是,当我在表中查询与特定 UserID 匹配的行时,会返回与给定 ID 不匹配的行。这里有人知道为什么吗?
我尝试使用 MATCH(UserID) AGAINST(USERID) 重写查询,但返回错误 1210:MATCH 的参数不正确,我觉得我可能会朝着错误的方向前进。
这是我的报价表脚本:
DROP TABLE IF EXISTS quotes;
CREATE TABLE quotes (
UserID varchar(255) NOT NULL,
Gallons decimal(10,0) NOT NULL,
Date varchar(50) NOT NULL,
Address varchar(255) NOT NULL,
InState tinyint DEFAULT NULL,
ppg decimal(10,0) GENERATED ALWAYS AS (if(InState,3,5)) STORED,
Total decimal(10,0) GENERATED ALWAYS AS ((Gallons * ppg)) STORED,
FullName varchar(101) NOT NULL,
KEY UserID (UserID),
CONSTRAINT quotes_ibfk_1 FOREIGN KEY (UserID) REFERENCES users (UserID)
)
这是我查询 Quote 表的存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `quoteGet`
(
IN USERID varchar(255)
)
BEGIN
SELECT * FROM QUOTES WHERE UserID = USERID;
END
mySQL 发现足以返回的两个 UserID 是'ddb22baa90894e24e1d53c186e203eba'
和'cde6a2f820a251817cd62c5ca3f322ae'
。我用后者调用了存储过程,它返回了前者的条目以及后者的条目。
该参数应重命名:
CREATE DEFINER=`root`@`localhost` PROCEDURE `quoteGet`
(
IN P_USERID varchar(255)
)
BEGIN
SELECT * FROM QUOTES WHERE UserID = P_USERID;
END
在当前设置UserId = USERID
中被视为1=1
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句