Как я могу контролировать, чтобы не дублировать данные в mySQL при обновлении значений строки в php - PullRequest
0 голосов
/ 06 апреля 2020

Проблема в том, что когда я go обновляю строку из обновления. php странице можно обновить строку с тем же адресом электронной почты и списком, который был вставлен в таблицу ранее. Я хочу добавить некоторые условия, которые помогут мне предотвратить дублирование одного и того же электронного письма и перекатывать.

$exist_query = mysqli_query($link, "SELECT * FROM tbl_student WHERE st_email = '$_POST[email]'");
$row_cnt = mysqli_num_rows($exist_query);

if($row_cnt>=1){
   throw new Exception('Email already exists');
}
else {
   $query = "UPDATE tbl_student SET st_name = '$_POST[name]', st_roll = '$_POST[roll]', st_email = '$_POST[email]' WHERE id = $id";
   $query_run = mysqli_query($link,$query);
   $success_message = 'Data has been updaed successfully';
   }

после использования этих кодов данные таблицы в основном выглядят так:

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

Еще, чтобы сказать, что когда я изменил индексы st_roll и st_email на UNIQUE, он работает без дублирования roll и email. После выполнения УНИКАЛЬНОГО я попробовал эти коды

$query = "UPDATE tbl_student SET st_name = '$_POST[name]', st_roll = '$_POST[roll]', st_email = '$_POST[email]' WHERE id = $id";
     $query_run = mysqli_query($link,$query);
      if($query_run){
        $success_message = 'Data has been updaed successfully';
      }
      else {
        throw new Exception('Data already exists');
      }

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

NB: Извините за мой плохой Engli sh.

1 Ответ

1 голос
/ 06 апреля 2020

MAke Email UNIQUE

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

С помощью следующей команды вы можете сделать столбец meail UNIQUE

ALTER TABLE student
ADD UNIQUE (email); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...