【发布时间】: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:对不起,我的英语不好。
【问题讨论】:
-
嗨!你能展示一些你尝试过的代码吗?无论如何,要更新现有行,您需要使用
UPDATE而不是INSERT。查看此页面:w3schools.com/sql/sql_update.asp。干杯!
标签: php mysql duplicates