【问题标题】:collect data form array of students grades and loop insert via sql only for students with no data收集学生成绩数组的数据并通过 sql 循环插入,仅适用于没有数据的学生
【发布时间】:2012-10-25 08:54:49
【问题描述】:

大家好,这只是另一个跳跃的障碍。 我有一个表格中的学生动态列表

<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 是唯一的,因此不会插入组合。

或者如果学生已经有数据,则不要在学生列表中回显他的名字

谢谢,我就是想不通。

【问题讨论】:

    标签: php sql loops


    【解决方案1】:

    考虑到您使用的是 MySQL,请使用

    INSERT .. ON DUPLICATE KEY IGNORE 
    

    (如果您想更新,则为 UPDATE)。但是,您需要设置一个主键才能使其工作。

    【讨论】:

    • 谢谢,抱歉迟到了。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2021-05-31
    • 2022-01-04
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多