插入特定的值更改记录
问题描述:
从下面的代码,如果它显示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]')");
}
}
答
先做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')");
}
}
}
不要使用'INSERT',使用'UPDATE'来修改现有的行。如果这些值相同,则不会有任何影响。 – Barmar 2015-03-03 07:35:47
不需要,我需要在新旧记录的报告中显示,所以我有两张桌子。第一个表将有旧记录,第二个表(customer_table2)将只有更新的记录。 – 2015-03-03 07:38:51
插入之前,测试旧表中是否已存在该行。 – Barmar 2015-03-03 07:39:49