PHP / MySQL Вставка различных значений массива

Я вставляю значения в таблицу 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 />";
}

5

Решение

Создать индекс для уникальной записи, используя комбинацию полей

ALTER TABLE table_name ADD UNIQUE INDEX index_name (field1, field2);

это позволит вам добавить первую запись, но при повторяющейся записи покажите повторяющуюся запись … для уникального индекса. Вы можете использовать try and catch отобразить сообщение об ошибке или использовать on duplicate update record если ваш проект имеет это требование.

2

Другие решения

запросите максимальный приоритет для студента, затем увеличьте его на 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.
}
0

А ты уже прошел курс программирования? Супер скидка!
Прокачать скилл $$$
×