我很难推断出这个输出。
问题在于一个服务器,而不是另一个服务器,并且不知何故,这些值被计算为多个"真理"当只有一个值相同时。
这是一个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
`
答案 0 :(得分:5)
这是一个非常酷的PHP,并且会引起一些意想不到的魔力。
一旦它发现2个字符串看起来像数字 - 它将它们转换为数字并在之后进行比较(并且你可能会运行32位php,它只会溢出这么大的整数)。
示例:
var_dump('01' == '1'); // true
要避免使用===
比较,这会阻止它这样做。