Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询中的整数比较无法正常工作?_Php_Mysql - Fatal编程技术网

Php MySQL查询中的整数比较无法正常工作?

Php MySQL查询中的整数比较无法正常工作?,php,mysql,Php,Mysql,我在比较MySQL查询中的两个整数时遇到了一个问题,它没有找到任何结果,但应该找到。我正在使用的查询: "SELECT * FROM users WHERE var1 = '" . $variable1 . "' AND var2 = '" . $variable2 . "' AND var3 = 3" 如果我省略AND var3=3位,它工作得很好,但是如果输入,它将不会返回任何结果 在数据库中,var3存储为tinyint,出于测试目的,目前每个用户的值为3。这里有我遗漏的东西吗?非

我在比较MySQL查询中的两个整数时遇到了一个问题,它没有找到任何结果,但应该找到。我正在使用的查询:

"SELECT * FROM users 
WHERE var1 = '" . $variable1 . "' 
AND var2 = '" . $variable2 . "' 
AND var3 = 3"
如果我省略AND var3=3位,它工作得很好,但是如果输入,它将不会返回任何结果

在数据库中,var3存储为tinyint,出于测试目的,目前每个用户的值为3。这里有我遗漏的东西吗?非常感谢您的帮助


Chris

关于var1和var2,如果它们是字符串或int

在php文件中,尝试让$variable1和$variable1类似整数

那样

          $variable1 = INTVAL($variable1) ;
          $variable2 = INTVAL($variable2) ;
在你的查询中,你会这样做吗

   "SELECT * FROM users 
   WHERE var1 = $variable1
     AND var2 = $variable2 
   AND var3 = 3"

然后它将在您的sql中工作,您应该使用PDO或mysqli,这样您就可以绑定参数并避免注入。在我看来,这也使它更容易阅读

$sql = 'SELECT * FROM users 
       WHERE var1 = ? 
       AND var2 = ?
       AND var3 = 3';
$sth = $dbh->prepare($sql);
$sth->execute(array($variable1, $variable2));

这也避免了向整数值添加单引号之类的错误,就像您在您的查询中那样。

查询没有问题,或者有一个小引号-您可能只是没有您认为自己有的记录。@Mark B我一开始是这么想的,但在数据库中查找结果时,我还取出了var3=3部分,并运行了一个回声var3;它给了我3分。我真的很困惑!variable1和variable2都是字符串值与字符串值进行比较,它们在没有var3部分的情况下工作得很好,只有在添加var3时,它才拒绝抛出任何值:我回答的Sit不起作用?我感谢您的建议,我将对此进行研究,我已经研究过mysqli和PDO,但目前我的提供商都不支持,老实说,我可能会考虑改变我的提供商。但是单引号中没有错误,前两个变量是字符串而不是整数。在阅读了您的其他注释后,我意识到出于某种原因,我假设$variable1和$variable2是整数。如果上面的代码不起作用,您应该在SQL客户机或phpmyadmin中执行查询,以确保查询或表没有问题。例如,尝试从用户中选择var3以确保正确存储var3列。然后尝试从var3=3的用户中选择*,如果可以的话。@user1959287您确定没有PDO吗?从5.1开始,它就伴随着每一个PHP出现。我想,多亏了这一点,我才真正解决了这个问题。出于安全原因,我用var3代替了它,实际的变量叫做'group',我不知道还有一个mysql组。有什么方法可以避免这个问题,还是仅仅意味着更改变量名?@ChrisMoll我会仔细检查,这是我之前检查过的,我的提供商在更新PHP版本时不是最“有效”的!