PHP/MySQL插入不同的数组值

PHP/MySQL插入不同的数组值,php,mysql,arrays,unique-constraint,distinct-values,Php,Mysql,Arrays,Unique Constraint,Distinct Values,我正在使用下面的代码向MySQL表中插入值,我需要防止用户多次为每个studentname插入相同的priority值。请问最好的方法是什么 这是表格: id studentname title academicdiscipline priority 012345678 TEST, NAME Test title 1 Civil 1 012345678 TEST, NAME Test

我正在使用下面的代码向MySQL表中插入值,我需要防止用户多次为每个
studentname
插入相同的
priority
值。请问最好的方法是什么

这是表格:

 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 />"; 
} 
if(设置($\u POST['submit'])和&!空($\u POST['submit'])){
$ids=$_POST['id'];
$names=$_POST['studentname'];
$titles=$_POST['title'];
$disciplies=$_POST['academicruciply'];
$priorities=$_POST['priority'];
foreach($key=>$priority的优先级){
如果($priority>0){
$query=“插入通量项目选择(id、学生姓名、职称、学科、优先级)
值(“.mysql\u real\u escape\u字符串($ids[$key])”,
“.mysql\u real\u escape\u字符串($names[$key])”,
“.mysql\u real\u escape\u字符串($titles[$key])”,
“.mysql\u real\u escape\u string($productions[$key])”,
“.mysql\u real\u escape\u字符串($priority)。”;
$retval=mysql\u query($query)或die(mysql\u error());
} 
} 
echo“已添加。


”; }
查询学生的最大优先级,然后用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. 
}

使用字段组合为唯一记录创建索引

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

它将允许您添加第一条记录,但在重复条目上显示重复条目。。。用于唯一索引。您可以使用
try-and-catch
来显示错误消息,或者如果您的项目有此要求,可以对重复的更新记录使用

为唯一记录创建索引,使用字段组合您可以创建它,如
altertable\u name addunique index\u name(字段1,字段2)等等。@RamSharma感谢-worked
altertableflux\u项目选择添加唯一索引(studentname,priority)很棒-它插入第一行并给出一个“重复条目…”。。。用于唯一索引'。我想阻止插入并给出警告,这样他们可以返回并检查选择。这如何确定输入的
优先级
是否重复?但实际上,您也在使
优先级
字段的值任意化,而不是用户定义的,不是吗?啊,好的。您希望您的优先级由用户输入。然后你只需检查该学生的家长是否已经存在$优先级='从通量项目选择中选择计数(优先级),其中id=学生id,优先级=优先级;如果计数大于零,则表示它有错误,需要重定向回表单。