2013-03-31 2 views
0

В моем проекте значение таблицы mysql необходимо обновить, поэтому, когда пользователь видит свой профиль, он может обновить свой профиль, после нажатия кнопки «Обновить профиль» он/она будет см. форму, которая заполняется предыдущими данными, а затем он может изменить свой профиль или нет. Я хочу проверить, обновляет ли он информацию или нет, поэтому я извлекаю эту информацию пользователя из базы данных и проверяю текущую информацию, которую он/она вводит, если значения изменяются, а затем сохраняет это измененное значение в другом массиве и сохраняет только эту измененную информацию , Поэтому я использую функцию strcmp (str1, str2), но она не работает, поэтому я использую «===», она работает только для небольших данных, таких как имя, пароль и т. Д. Но мне нужно также проверить, изменил ли он/ее биография или нет, я использую эту функцию, но она не работает.строка сравнения в php

Мой код ::

<?php 
      $users = $user->user_info_by_id($object->id); // get user's info from database 

      foreach($users as $user) { // 
      if($user->user_name === $arrayValue['user_name']) // here $arrayValue['user_name'] is the recent info that user sent to update his profile 
       echo "<br /> value matched"; // it matched 
      else { 
       echo "<br /> value not matched"; 
      } 

      if($user->user_biography === $arrayValue['user_biography']) // it doesn't work, here 'user_biography' is 'text' type data in mysql database 
       echo "<br /> value matched"; 
      else 
       echo "<br /> value not matched"; // answer is always 'value not matched' 
     } 

    ?> 
+1

просто заменить все поля, если вам не нужно записывать, где было сделано изменение. – 2013-03-31 01:21:08

+1

Вы пробовали двойные знаки равенства вместо тройного равенства? '==' vs '==='. В этих случаях я не вижу причины проверять «тип», и это может быть причиной проблемы. Разница между двойными и тройными равна: http://stackoverflow.com/questions/80646/how-do -the-equal-double-equals-and-identity-triple-equals-comparis –

ответ

1

strcasecmp должен делать эту работу. Я знаю, что вы упомянули в своем ответе, что вы пытались strcmp, и это не сработало, но вы не упоминали или не показывали, как вы его использовали.

Try:

if($user->user_biography === trim($arrayValue['user_biography']) != 0) { 
    // user_name changed. 
} else { 
    //user_name did not change 
} 
+0

Мне нужно проверить данные типа «текст» как «user_biography». Это «strcasecmp» полезно? – user2013

+0

Затем просто измените 'user_name' для 'user_biography'. Если он возвращает что-либо, кроме 0, это означает, что значение было изменено. – Ares

+0

Это работает, много спасибо – user2013

Смежные вопросы