插入特定的值更改记录

问题描述:

从下面的代码,如果它显示10条记录,如果用户修改“代码”或“”第二和第五记录的价值,如何将只有第二和第五记录在另一张单独的表中。但从我插入查询我可以插入所有10条记录。但我只需要插入两个受影响的记录。请帮忙。插入特定的值更改记录

include('DB.php'); 
$sql="SELECT * FROM customer where customer_name='".$q."' "; 
$result = mysql_query($sql); 
$num_row = mysql_num_rows($result); 
$row_count=1; 
if($num_row>0) 
{  
echo "<table > 
<tr> 
<th>S.No</th> 
<th>Name</th> 
<th>Code</th> 
<th>Number</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) { 
$c_name=$row['c_name']; 
$c_code=$row['c_code']; 
$c_number=$row['c_number']; 

    echo "<tr>"; 
    echo "<td> $row_count.</td>"; 
    echo "<td><input type='text' name='c_name[]' id='c_name' value='$c_name' readonly /></td>"; 
    echo "<td><input type='text' name='c_code[]' id='c_code' value='$c_code' /></td>"; 
    echo "<td><input type='text' name='c_number[]' id='c_number' value='$c_number' /></td>"; 
    echo "</tr>"; 

    $row_count++; 
      } 
echo "</table>"; 
} 

INSERT:

$c_name=$_POST['c_name']; 
$c_code=$_POST['c_code']; 
$c_number=$_POST['c_number']; 

if(isset($c_code)) 
{      
for($i=0;$i<count($c_code);$i++) 
{ 
{ 
$insert=mysql_query("INSERT INTO customer_table2(name,code,number) 
VALUES ('$c_name[$i]','$c_code[$i]','$c_number[$i]')"); 
} 
} 
+0

不要使用'INSERT',使用'UPDATE'来修改现有的行。如果这些值相同,则不会有任何影响。 – Barmar 2015-03-03 07:35:47

+0

不需要,我需要在新旧记录的报告中显示,所以我有两张桌子。第一个表将有旧记录,第二个表(customer_table2)将只有更新的记录。 – 2015-03-03 07:38:51

+0

插入之前,测试旧表中是否已存在该行。 – Barmar 2015-03-03 07:39:49

先做SELECT查询,看是否该行已经在原始表。如果没有,请将其添加到新表格中。

$c_name=$_POST['c_name']; 
$c_code=$_POST['c_code']; 
$c_number=$_POST['c_number']; 

if(isset($c_code)) 
{      
    for($i=0;$i<count($c_code);$i++) 
    { 
     // Prevent SQL injection 
     $name = mysql_real_escape_string($c_name[$i]); 
     $code = mysql_real_escape_string($c_code[$i]); 
     $number = mysql_real_escape_string($c_number[$i]); 
     $select = mysql_query("SELECT COUNT(*) AS c FROM customer WHERE name = '$name' AND code = '$code' AND number = '$number'"); 
     $row = mysql_fetch_assoc($select); 
     if ($row['c'] == 0) { 
      $insert=mysql_query("INSERT INTO customer_table2(name,code,number) 
           VALUES ('$name','$code','$number')"); 
     } 
    } 
} 
+0

感谢您的样品。但是这插入了所有记录。但我只需要插入第2和第5条记录,因为我更改了这两个记录的值。 – 2015-03-03 12:16:59

+0

我不知道为什么会发生这种情况。如果你没有改变这些值,那么'SELECT COUNT(*)'应该找到现有的行,所以'COUNT(*)'将会大于0. – Barmar 2015-03-03 12:24:55

+0

是在'customer'表之前从用户提交表单? – Barmar 2015-03-03 12:25:50