我有一个名为getvotes(postitem varchar(50),userid varchar(50))
的存储过程,它获取用户为某个项目提供的投票数。此过程中的DML语句是
select count(*) from tblvotes where `postitem`=postitem and `userid`=userid;
它给了我30的结果。但是当我使用
运行sql(在存储过程之外使用相同的参数值)时 select count(*) from tblvotes where `postitem`=md5(1) and `userid`=md5(1);
结果是10。
我的查询有什么问题?
谢谢!
答案 0 :(得分:0)
请勿使用与列名称或其他名称相同的参数名称。
我通常在每个参数前加p_
前缀,每个变量加v_
前缀,以避免此类错误。
答案 1 :(得分:0)
如果哈希比较可能失败,请检查用于MD5和用户HEX的加密长度
select count(*) from tblvotes where
{postitem {1}}的userid = HEX(MD5(1) and