mysql:用字符串比较整数并返回true
在MySQL中是否有任何等效于===
的运算符,它们检查值以及数据类型?mysql:用字符串比较整数并返回true
我有一个数据库,这是INT数据类型
从登录页面,输入用户logicheck过程中的用户ID和现在我下面写的代码
$loginCode = mysql_real_escape_string($_POST[userCode]);
$sql=SELECT * FROM tbl_user WHERE u_id=".$loginCode ;
$result=$db->query($sql);
这将返回一个排u_id
场
现在当输入2.0然后它也返回我不想要的行,我需要的是2.0写入时,查询确实不返回任何行。
gettype($loginCode)
返回字符串....
这是不可思议的一个整数类型(U_ID)字段可以在MySQL的字符串类型比较? 请给我建议的解决方案或没有更好的办法
所有SQL数据库会浮隐式转换为int。
您可以确保您的登录代码只包含正常表达式的数字。例如:
WHERE u_id = <LoginCode> AND <LoginCode> RLIKE '^[0-9]+$'
你可以投你的数据,并比较它们的字符串:
"SELECT * FROM tbl_user WHERE CAST(u_id as nvarchar(3))=".$loginCode
+1不错,这会强制MySQL比较字符串。对于大型表格,这可能会损害性能,因为u_id上的索引无法使用。但tbl_user不可能非常大:) – Andomar 2010-03-03 13:59:09
它返回以下错误: '你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在'n varchar(3)'附近使用正确的语法)= 2第1行限制0,30'' – diEcho 2010-03-03 14:15:10
显然,您不能转换为'varchar'。尝试'修剪(转换(u_id作为nchar(12)))'而不是 – Andomar 2010-03-03 14:19:15
那里没有LoginCode,它的'$ loginCode'如何在 – diEcho 2010-03-03 14:25:57
'$ sql =“SELECT * FROM tbl_user WHERE u_id =”。$ loginCode。“AND'”。$ loginCode里添加php变量。 “'RLIKE'^ [0-9] + $'”;' – Andomar 2010-03-03 14:28:28