2016-10-12 4 views
1

Я хочу проверить, существует ли зарегистрированное имя пользователя в db с адресом электронной почты или нет. Как это проверить?Как проверить вывешенное значение уже существует в db или нет?

public function check_all($username) 
     { 
      $check = $this->db->where("username","email", $username)->get("users"); 
      if($check->num_rows() > 0) { 
       return false; 
      } else { 
       return true; 
      } 
     } 
+0

вы 'выбрать ... где электронная почта = $ email или username = $ username', в основном. так как вы не указали абсолютно никаких подробностей относительно того, что это за материал 'db-> where' или как он работает, это все, что мы можем предложить. –

+0

Извините, я использую codeigniter https://www.codeigniter.com/ @MarcB – Mehur

+0

Это, безусловно, возможно, но на самом деле не имеет особого смысла. Это более эффективная стратегия, чтобы просто попытаться вставить сразу. Это не удастся, если ваш объединенный индекс, объявленный как уникальный, уже содержит комбинацию. Этого достаточно для того, чтобы завершить уже принятое имя пользователя. Это экономит вам дополнительную инструкцию select, тем самым экономит время и код. – arkascha

ответ

1

Если вы хотите, чтобы проверить, если имя пользователя существует, вы можете попробовать следующий фрагмент кода

public function check_all($username) 
     { 
      $results = $this->db->select('USERNAME') 
           ->from('USERS') 
           ->where('USERNAME', $username) 
           ->get(); 

      if($results->num_rows() > 0) 
      { 
       //The user exist 
       return true; 
      } else { 
       return false; 
      } 
     } 

Если вы хотите, чтобы проверить, если пользователь имеет адрес электронной почты, вы могли бы сделать

public function check_all($username) 
     { 
      $results = $this->db->select('USERNAME') 
           ->from('USERS') 
           ->where('USERNAME', $username) 
           ->where('EMAIL IS NOT NULL') 
           ->get(); 

      if($results->num_rows() > 0) 
      { 
       //The user has an email 
       return true; 
      } else { 
       return false; 
      } 
     } 
+0

Привет, я хочу знать, как проверить, если кто-то опубликовал адрес электронной почты как имя пользователя и как сделать их действительными? – Mehur

+0

Если пользователь отправляет электронную почту или имя пользователя через одно и то же '$ username', то как проверить, что это действительно или существует? – Mehur

+0

Можете ли вы представить два примера допустимых значений для '$ username' Я предполагаю, что вы имеете в виду, что при вызове функции вы можете вызвать функцию как' check_all ('Mehur') 'или' check_all ('[email protected] ') 'и что вы хотите вернуть функцию, если пользователь существует? Если вы можете предоставить более подробные сведения в своем вопросе, чтобы мы могли лучше ответить на него и предоставить примеры. – ebellefontaine

1

Существует 3 подхода. Метод 1, выполните 2 запроса, сначала проверьте, существует ли он, и второй запрос для вставки, если 1-й найденный нуль совпадает.

Способ 2, используйте синтаксис insert ignore, поэтому дублирующие вставки молча терпят неудачу.

Способ 3, используйте синтаксис ON DUPLICATE KEY UPDATE для обновления столбцов записи, которая была бы вставлена, если она еще не существует.

+0

Просьба представить код. – Mehur

0

Просто дайте подтверждение, это просто и легко для проверки уже существует пользователь/электронная почта в базе данных

[ 
'field' => 'username', 
'label' => 'User Name', 
'rules' =>'trim|required|is_unique[login.username], 
         'errors' =>array('is_unique' => 'The %s is already taken')         

]

Здесь is_unique[login.username] где Логин это имя таблицы и имя пользователя в столбце, который directlt см в базе данных и проверить уникальное значение

для больше идти на CI

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