比较2个完全相同的字符串将返回false

时间:2011-11-09 11:30:37

标签: php mysql forms

我有一个通过html表单发布的变量:

$_POST['ref']

从数据库中的表中提取的变量:

$row['ref']

我有一个基本的比较脚本来检查它们是否相同:

$ref = $_POST['ref'];

$result = mysql_query("SELECT * FROM logbook.job");
if (!$result) {
    die("Query to show fields from table failed");
}


    $row = mysql_fetch_array($result);
    $refdb = $row['ref'];
    $refform = $_POST['ref'];

    echo $_POST['ref'] ."<br>". $row['ref'] . "<br><br>";

        if ($refdb == $refform) {
    echo "Yes they are<br><br>";
    }

    else {
    echo "No they are not<br><br>";
    }


    if (is_string($_POST['ref'])) 
 {
 echo "Yes";
 } else {
 echo "No";
 }
echo "<br>";
    if (is_string($row['ref'])) 
 {
 echo "Yes";
 } else {
 echo "No";
 }

哪个输出:

G2mtxW
G2mtxW

No they are not

Yes
Yes
我回应了他们。比我问他们是否一样。然后我检查每个是否是一个字符串。

为什么他们不一样?我怎样才能让它们匹配

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:12)

尝试使用String的二进制安全比较:

result = strcmp($str1, $str2);

如果结果为0,则两者都相同。否则,他们不是。

答案 1 :(得分:7)

您的一个字符串(可能是数据库中的一个字符串)可能以空值终止。我测试了以下

$foo = "abc\0";
$bar = "abc";
echo "$foo\n$bar\n";
if($foo == $bar)
  echo "Equal.";
else
  echo "Not equal."

输出

abc
abc
Not equal.

答案 2 :(得分:2)

尝试var_dump两个值,检查它们的长度并使用view-source检查它们。它们在某种程度上是不同的。

答案 3 :(得分:0)

     echo $status_message;
     echo "Accepted";

     if(strcmp($status_message,"Accepted")==0)
     {
             echo "equal";
     }
     else
     {
            echo "not equal";
     }

?>                      

$ row ['status']是表中的字段