2013-03-14 4 views
0

Я использую strcmp для сравнения строки из базы данных.strcmp дал weird result

strcmp($privilege,"admin") 

Я уверен, что данные $ привилегия администратора, но результат я получаю от STRCMP 5

Любая идея, почему это происходит? Нет места или что-то еще.

+0

Если вы уверены, что $ privilege содержит «admin», вы должны быть уверены, что это то, что он будет распечатывать, когда вы повторяете его в отладчике. – dar7yl

+2

> 0 sorts higher, 0 sorts equal (так что вы, вероятно, можете использовать это с '=== 0'), <0 сортирует медленнее. Он думает, что 'strcmp' делает что-то еще, а затем вы думаете, что это так, посмотрели ли вы на функцию в руководстве? – Wrikken

+1

Да, убедитесь, что $ privilege фактически содержит «admin». Это может быть проблема. Чтобы игнорировать случай try strcasecmp – William

ответ

1

FIrst всего, спасибо, что ответ.

Почему он возвращает 5? Это из-за базы данных.

Я использую nchar (MSSQL), чтобы сохранить его максимум 10 символов.

«admin» использовать только 5 и автоматически добавить 5 пробелов.

Поэтому я получаю 5 от strcmp. Спасибо, парень.

Хороший урок для меня.