在MySQL中是否有任何等同于===
的运算符来检查值以及数据类型?
我在数据库中有一个u_id
字段 int 数据类型
现在从用户输入用户ID的登录页面和逻辑检查中我写下代码
$loginCode = mysql_real_escape_string($_POST[userCode]);
$sql=SELECT * FROM tbl_user WHERE u_id=".$loginCode ;
$result=$db->query($sql);
这会返回一行
现在当输入 2.0 时,它也会返回我不想要的行,我需要的是当写入2.0时,查询不会返回任何行。
gettype($loginCode)
返回字符串....
奇怪的是整数类型(u_id)字段如何与mysql中的字符串类型进行比较? 请建议我解决方案或任何更好的方式
答案 0 :(得分:3)
您可以投射数据并将其作为字符串进行比较:
"SELECT * FROM tbl_user WHERE CAST(u_id as nvarchar(3))=".$loginCode
答案 1 :(得分:2)
所有SQL数据库都会隐式地将float转换为int。
您可以确保您的登录代码只包含具有常规表达式的数字。例如:
WHERE u_id = <LoginCode> AND <LoginCode> RLIKE '^[0-9]+$'