我在MySQL
查询中比较两个整数时遇到了问题,但是找不到任何结果但应该是。我正在使用的查询:
"SELECT * FROM users
WHERE var1 = '" . $variable1 . "'
AND var2 = '" . $variable2 . "'
AND var3 = 3"
如果我遗漏AND var3 = 3
位,它可以正常工作,但是如果没有,它将不会返回任何结果。
在数据库中,var3
存储为tinyint
,目前每个用户的值为3,以便进行测试。这里有什么我想念的吗?非常感谢任何帮助。
克里斯
答案 0 :(得分:2)
您应该使用PDO或mysqli,以便绑定参数并避免注入。在我看来,它也使阅读更容易。
$sql = 'SELECT * FROM users
WHERE var1 = ?
AND var2 = ?
AND var3 = 3';
$sth = $dbh->prepare($sql);
$sth->execute(array($variable1, $variable2));
这也避免了在整数值中添加单引号的错误,这是您在自己的整数值中所做的。
答案 1 :(得分:0)
关于你的var1和var2,如果它们是string或int
在您的php文件中尝试让$variable1
和$variable1
像integers
$variable1 = INTVAL($variable1) ;
$variable2 = INTVAL($variable2) ;
并在您的查询中执行此操作
"SELECT * FROM users
WHERE var1 = $variable1
AND var2 = $variable2
AND var3 = 3"
然后它将在你的sql中运行