PHP SQL查询中的错误真相

Luk*_*uke 1 php sql apache

我在使用此输出进行推理时遇到了困难.

问题在于一个服务器,而不是另一个服务器,并且当只有一个值相同时,不知何故将值计算为多个"真值".

这是一个PHP版自动解释的东西,PHP试图用数字而不是字符串?

任何想法都会有所帮助 谢谢!

$SelectedID="20140115214529625";

$con=GetSQLConnection("SomeDataBaseSomewhere");

$sqlQ="SELECT * FROM StoryTable ORDER BY  Name ASC";

$result = mysqli_query($con,$sqlQ);

while($row = mysqli_fetch_array($result)){
    if($SelectedID==$row['newPermID']){
        echo "Data: ".$SelectedID.", ".$row['newPermID']."\n";
    }else{}
}
mysqli_close($con);


Output:
Data: 20140115214529625, 20140115214529623
Data: 20140115214529625, 20140115214529624
Data: 20140115214529625, 20140115214529625 < Should Be The Only True Value???
Data: 20140115214529625, 20140115214529626
Run Code Online (Sandbox Code Playgroud)

`

zer*_*kms 5

这是一个太酷的PHP,并在引擎盖下做了一些意想不到的魔术.

一旦它发现2个字符串看起来像数字 - 它将它们转换为数字并在之后进行比较(并且你可能运行32位php,它只是溢出了如此大的整数).

例:

var_dump('01' == '1'); // true
Run Code Online (Sandbox Code Playgroud)

为避免它使用===比较,这将阻止它这样做.