【问题标题】:How can i control to not duplicate data in mySQL when updating the values of a row in php更新php中一行的值时,如何控制在mySQL中不重复数据
【发布时间】:2020-07-17 21:58:30
【问题描述】:

问题是当我从 update.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';
   }

使用这些代码后 the table data is primarily looks like this.

when i tried to update Name from alexa to alex it tells that Email already exists 我无法更新这些字段中的任何一个。 我想在不复制卷和电子邮件地址的情况下更新数据。 我该怎么做?

更要说明的是,当我将 st_roll 和 st_email 的索引更改为 UNIQUE 时,它可以在不重复滚动和电子邮件的情况下工作。完成 UNIQUE 后,我尝试了此代码

$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');
      }

我只能说数据已经存在。 但我想更具体地说明电子邮件是重复的还是卷号是重复的?我可以申请什么条件更具体?

N.B:对不起,我的英语不好。

【问题讨论】:

标签: php mysql duplicates


【解决方案1】:

发送电子邮件UNIQUE

所以任何电子邮件地址都不能重复输入

使用以下命令,您可以使列具有唯一性

ALTER TABLE student
ADD UNIQUE (email); 

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多