Я вставляю значения в таблицу MySQL, используя приведенный ниже код, и мне нужно запретить пользователям вставлять одинаковые priority
значение для каждого studentname
больше чем единожды. Каков наилучший способ сделать это, пожалуйста?
Это таблица:
id studentname title academicdiscipline priority
012345678 TEST, NAME Test title 1 Civil 1
012345678 TEST, NAME Test title 2 Civil 2
012345678 TEST, NAME Test title 3 Civil 3
012345678 TEST, NAME Test title 4 Civil 4
012345678 TEST, NAME Test title 5 Civil 5
Код:
if(isset($_POST['submit']) && !empty($_POST['submit'])) {
$ids = $_POST['id'];
$names = $_POST['studentname'];
$titles = $_POST['title'];
$disciplines = $_POST['academicdiscipline'];
$priorities = $_POST['priority'];
foreach($priorities as $key => $priority) {
if ($priority > 0) {
$query = "INSERT INTO flux_project_selection (id, studentname, title, academicdiscipline, priority)
VALUES ( " . mysql_real_escape_string($ids[$key]) . ",
'" . mysql_real_escape_string($names[$key]) . "',
'" . mysql_real_escape_string($titles[$key]) . "',
'" . mysql_real_escape_string($disciplines[$key]) . "',
" . mysql_real_escape_string($priority) . " )";
$retval = mysql_query($query) or die(mysql_error());
}
}
echo "<p> Added.</p><br />";
}
Создать индекс для уникальной записи, используя комбинацию полей
ALTER TABLE table_name ADD UNIQUE INDEX index_name (field1, field2);
это позволит вам добавить первую запись, но при повторяющейся записи покажите повторяющуюся запись … для уникального индекса. Вы можете использовать try and catch
отобразить сообщение об ошибке или использовать on duplicate update record
если ваш проект имеет это требование.
запросите максимальный приоритет для студента, затем увеличьте его на 1.
$queryMaxPriority = 'select max(priority) from flux_project_selection where id = STUDENT_ID;
$priority_no = $queryMaxPriority + 1;
Я использовал это в некоторых своих приложениях, которые я разработал.
Обновить
$priority = 'select count(priority) from flux_project_selection where id = STUDENT_ID and priority = PRIORITY';
if (count($priority>0)){
//send some error message in your page.
}