2015-03-03 105 views
1

從下面的代碼,如果它顯示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

回答

1

先做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