2017-08-20 67 views
-1

如果我插入了行并且我想更新此行中插入的这一行的一个列值而不更新此前一个过程中插入的旧行的一列值 您可以看到我的代码和更清楚地了解:更新立即插入行而不更新旧版

<?php 
session_start(); ?> 

<form action="" method="post" name="data_table"> 
<tbody > 
<?php 

require_once("dbconfig.php"); 
error_reporting(0); 
$id=$_POST['id']; 
$class=$_POST['class']; 
$d = new DateTime('now', new DateTimeZone('Asia/Baghdad')); 
$date=$d->format('Y-m-d H:i:s'); 
$q="select * from students WHERE class='$class'"; 
$qq=mysql_query($q) 
    or die(mysql_error()); 

echo "<table border='2'> 
<tr> 
<th>الأسم</th> 
<th>الحضور</th> 
</tr><tr>"; 
while($row=mysql_fetch_array($qq)){ 
?> 
<input type="hidden" name="class" value="<?php echo $row['class']; ?>" > 
<td><input type="checkbox" value="<?php echo $row['id']; ?>" name="id[]" ></td> 
<td><b><?php echo $row['username']; ?></td> 
<tr> 

<?php } ?> 
</table> 
<?php if (isset($_POST['submit'])) 
{if(empty($id) || $id==0) 
{ echo " please check "; 
} 
else 
{ 
$impid=implode(", ",$id); 
$qdel=mysql_query("INSERT INTO attendees SELECT * FROM `students` WHERE class='$class'"); 
$qdel=mysql_query("UPDATE attendees set datetime='$date'"); 

if (isset($qdel)){ 
echo "<h2> done </h2>";} 
} 
} ?> 
</tbody> 
</form> 

问题是现在插入更新查询更新所有行日期时间列的值和前现在,所以我的问题是,如何才能让每个插入过程更新查询工作与前一个分开 任何人都可以帮忙吗?谢谢

+1

我从你的描述中无法理解任何东西。 –

+0

请停止使用PHP的陈旧,不安全和不推荐使用mysql_ API – Strawberry

+0

你没有在'UPDATE'中使用'WHERE' –

回答

0

在插入后立即执行更新效率低下。依靠两个不同表格的列始终匹配也不是一个好主意。

您可以在查询中插入静态字符串。

INSERT INTO attendees (column1, column2, column3, datetime) 
SELECT column1, column2, column3, '$date' FROM students WHERE class='$class' 

然而,这打破了RDBMS的规范化标准。做到这一点的最佳方式不是将数据复制到与会者,而是将外键引用到与会者的学生ID中。你不应该更新两张表来更新学生的信息。我建议你在设计数据库之前阅读数据库规范化。

+0

我很欣赏你的话真的需要阅读更多cuz我还是初中 我要阅读练习更多你写的解决方案 谢谢 – muklah