2011-11-09 91 views
3

我有一个是通过HTML表单提交的变量:比较2个完全相同的字符串返回false

$_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 

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

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

任何帮助,将不胜感激

+1

是否有空格的任何变量? – Sjoerd

+0

没有它只是G2mtxW – SebastianOpperman

+0

只是为了验证,你可以给每个echo'd字符串添加一个'*'吗? –

回答

1

尝试var_dump -ing两个值,检查它们的长度,并使用查看源代码检查它们。在某些方面它们是不同的。

7

尝试使用弦乐二进制安全比较:

result = strcmp($str1, $str2);

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

+0

这就是解决方案!谢谢! –

+1

应该是被接受的答案! – 3zzy

6

您的一个字符串(可能是来自DB的字符串)可能以null结尾。我测试了以下

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

输出是

abc 
abc 
Not equal. 
+2

谢谢!它帮助我认识到我的字符串包含一个空字符。我使用'strip_tags'将其删除,如此处的评论所示:http://stackoverflow.com/a/642475/587594 – Clawsy

相关问题