Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中更新行的值时,如何控制mySQL中的数据不重复_Php_Mysql_Duplicates - Fatal编程技术网

在php中更新行的值时,如何控制mySQL中的数据不重复

在php中更新行的值时,如何控制mySQL中的数据不重复,php,mysql,duplicates,Php,Mysql,Duplicates,问题是,当我从update.php页面更新一行时,可能会使用之前插入到表中的相同电子邮件和滚动更新一行。 我想添加一些条件,以帮助我防止重复相同的电子邮件和滚动 $exist_query = mysqli_query($link, "SELECT * FROM tbl_student WHERE st_email = '$_POST[email]'"); $row_cnt = mysqli_num_rows($exist_query); if($r

问题是,当我从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';
   }
使用这些代码之后

我不能更新这些字段中的任何一个。 我想在不复制卷和电子邮件地址的情况下更新数据。 我该怎么做

更重要的是,当我将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');
      }
我只能说数据已经存在。 但我想更具体地说,电子邮件是重复的还是卷号是重复的?我可以申请什么条件更具体

注意:很抱歉我的英语不好。

发电子邮件

因此,任何电子邮件地址都不能重复输入

使用以下命令,可以使列meail唯一

ALTER TABLE student
ADD UNIQUE (email); 

你好你能给我看看你试过的代码吗?无论如何,要更新现有行,需要使用
update
而不是
INSERT
。请检查此页:。干杯这回答了你的问题吗?