嗨,这只是另一个跳跃的障碍。 我有一个动态的学生名单
<form method="POST" name="assignments" id="assignments" action="<? $_SERVER['PHP_SELF']; ?>">
<?php
$key = 0;
while($row_students = mysql_fetch_array($students))
{ ?>
<div style="margin-bottom:3px;">
<select name="student[<?php echo $key ?>][grade]" size="1">
<option value="NULL">--</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="20" selected="selected">20</option>
</select>
<?php echo $row_students['student_number'];?>
<input name="student[<?php echo $key ?>][student_id]" type="hidden"
value="<?php echo $row_students['student_number']; ?>" /> -
<?php echo $row_students['student_name'] ; ?>
<input name="student[<?php echo $key ?>][assignment_name]" type="hidden"
value="<?php echo $row_assignments['assignment_name'];?>" />
</div>
<br/>
<?php $key++;} ?>
<input name="section" type="hidden" value="<?php echo $_SESSION['section']; ?>" />
<input name="submit" type="submit" value="submit" />
| <a href="index.php">Cancel</a>
</form>
然后我有一个循环的sql并将它们插入到工作的数据库中
if(!empty($_POST['submit'])){
$sql = array();
foreach( $_POST['student'] as $row ) {
$sql[] = '(
'."NULL".',
'.mysql_prep($row['grade']).',
'.mysql_prep($row['student_id']).',
'."'{$row['assignment_name']}'".',
'."'{$current_section}'".')
'; }
mysql_query( 'INSERT INTO
graded_assignment (id, grade, student_id, assignment_name, section)
VALUES '.implode(',', $sql));
confirm_query($sql);
if(mysql_affected_rows()>=0)
{
redirect_to("index.php?assignment=1");
}
}
这是?如果我在教师提交成绩后将学生转移到另一个班级,他将会提交数据,而新教师将无法提交成绩,因为一个学生已经存在数据。
我如何检查学生是否存在数据,然后仅在没有数据的地方插入? student_id和assignment_name是唯一的,因此组合不会插入。
如果学生已有数据,则不在学生列表中回显他的名字
谢谢,我无法理解。
答案 0 :(得分:0)
考虑到您正在使用MySQL,请使用
INSERT .. ON DUPLICATE KEY IGNORE
(如果您想要更新,则更新)。但是,您需要设置主键才能使其正常工作。