mysql:将整数与字符串进行比较并返回true

时间:2010-03-03 13:48:09

标签: mysql

在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中的字符串类型进行比较? 请建议我解决方案或任何更好的方式

2 个答案:

答案 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]+$'