PHP:当程序用相等的值打印值时,为什么不将值比较为相等

PHP:当程序用相等的值打印值时,为什么不将值比较为相等,php,integer,equality,Php,Integer,Equality,我有一个系统的代码: //get new data from text fields $i = 0; $data = array(); while ($i < 7){ $data[$i] = $_POST['t'.$i]; $i++; } //get the ID to use in the MySQL database query $id=$data[0]; //get the existing integer from MySQL database $query="

我有一个系统的代码:

//get new data from text fields
$i = 0;
$data = array();
while ($i < 7){
    $data[$i] = $_POST['t'.$i];
    $i++;
}

//get the ID to use in the MySQL database query
$id=$data[0];

//get the existing integer from MySQL database
$query="SELECT * FROM tbl WHERE ID='$id';";
$result=mysql_query($query) or die(mysql_error());
$mem=mysql_result($result, 0, 'Member');

//print to see if it's equal
echo 'Does '.$mem.'='.$data[1].'?<br>';

//check equality
if ($mem != $data[1]){
    echo "I'm not supposed to exist";
}
$data[0]是该数据库表的唯一id,$data[1]是我们试图获取的

代码将$mem打印为999999。与$data[0]相同,999999。但由于某种原因,当我通过if语句传递它们时,它们并不相等。

将它们转换为int

if ((int)$mem != (int)$data[1]){
    echo "I'm not supposed to exist";
}

您写入的数据[0]等于$mem,并比较$data[1]

mysql\uuu函数扩展名为。我建议使用mysqli*uu函数或相反。if语句比较$data[1],而不是$data[0]。并在echo中转义你的单引号。或者用法:我不应该存在;这段代码应该会因为未替换的引号而出现语法错误,因此它甚至不应该执行。Show var_dump$mem,$data[1]。它们可能在编码上有所不同。字符串可能被编码成各种类型,为什么不检查我的解决方案呢?如果不想强制转换,请使用二进制安全比较函数strcmp;