Проверка формы с sql + codeigniter - PullRequest
2 голосов
/ 22 июля 2010

Я работаю над созданием функции обратного вызова в codeigniter, чтобы увидеть, существует ли определенная запись в базе данных, и если она это сделает, она бы хотела вернуть ошибку.

В контроллере соответствующий код:

function firstname_check($str)
{

  if($this->home_model->find_username($str)) return false;
  true;
}

Затем в модели я проверяю базу данных с помощью функции find_username ().

function find_username($str)
 {
  if($this->db->get_where('MasterDB', array('firstname' => $str)))
   {
    return TRUE;
   }

    return FALSE;
   }

Я использовал функцию firstname_check в тестировании, и она работает. Я сделал что-то вроде

function firstname_check($str)
 {

   if($str == 'test') return false;
   true;
 }

И в этом случае это сработало. Не совсем уверен, почему моя модель не делает то, что должна. И руководство будет оценено.

Ответы [ 3 ]

1 голос
/ 22 июля 2010
  if($this->home_model->find_username($str)) return false;
  true;

Учитывая приведенный выше фрагмент кода, вы не вернете его значение true.Если это ваш код, а не опечатка, это должно быть:

  if($this->home_model->find_username($str)) return false;
    return true;

Это должно исправить это, учитывая, что у вас не было опечатки.

РЕДАКТИРОВАТЬ: Вы также можете просто сделать этотак как функция возвращает true / false, нет необходимости в операторе if:

function firstname_check($str)
{
  return $this->home_model->find_username($str);
}
0 голосов
/ 23 июля 2010

Я нахожу, что ваше наименование сбивает с толку.Функция вашей модели называется 'find_username', но она ищет имя.Ваше имя таблицы называется «MasterDB».Это больше похоже на имя базы данных.Разве это не должно называться «пользователи» или что-то подобное?Я бы написал так:

Функция модели:

function user_exists_with_firstname($firstname)
{
    $sql = 'select count(*) as user_count 
            from users 
            where firstname=?';
    $result = $this->db->query($sql, array($firstname))->result();
    return ((int) $result->user_count) > 0;
}

Функция обратного вызова проверки:

function firstname_check($firstname)
{
    return !$this->user_model->user_exists_with_firstname($firstname);
}
0 голосов
/ 22 июля 2010

Таким образом, решение заключалось в том, чтобы вывести оператор запроса из оператора if, поместить его в переменную, затем подсчитать строки, и если количество строк было> 0, сделать недействительным.

Хотя это более запутанно, чем хотелось бы.

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