Сравнение 2 одинаковых строк возвращает false - PullRequest
9 голосов
/ 09 ноября 2011

У меня есть переменная, которая отправляется через 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

Я повторяю их обоих. Чем я спрашиваю, если они одинаковы. Затем я проверяю, является ли каждый строкой.

Почему они не одинаковы? Как я могу заставить их соответствовать

Буду признателен за любую помощь

Ответы [ 3 ]

12 голосов
/ 09 ноября 2011

Попробуйте использовать бинарно-безопасное сравнение для строки:

result = strcmp($str1, $str2);

Если результат равен 0, тогда оба значения одинаковы.В противном случае это не так.

7 голосов
/ 09 ноября 2011

Одна из ваших строк (вероятно, из БД) может заканчиваться нулем.Я проверил следующее

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

Вывод

abc
abc
Not equal.
2 голосов
/ 09 ноября 2011

Попробуйте var_dump - введите оба значения, проверьте их длину и проверьте их с помощью view-source. Они разные в чем-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...