我有一个包含1列的表,用于存储ID auto_increment以及该指令:
$query = "SELECT first_data, second_data, third_data
FROM table_data
WHERE condition = 'value_condition'";
$result = mysql_query($query) or die(mysql_error());
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
while($row = mysql_fetch_assoc($result)) {
$valueone = $row['first_data'];
$valuetwo = $row['second_data'];
$valuethree = $row['third_data'];
$queryTwo = "INSERT INTO historial_ventas (reg1, reg2, reg3)
VALUES('$ivalueone','$valuetwo','$valuethree')";
$resultTwol = mysql_query($queryTwo) or die(mysql_error());
}
} else {
return false;
}
信息存储如下:
ID(auto_increment) reg1 reg2 reg3
______________________________________________
1 value1 value2 value3
2 value1 value2 value3
3 value1 value2 value3
4 value1 value2 value3
但是我希望在while循环中保存记录,使用与在线购买时相同的ID存储,即保存产品及其功能但使用相同的ID购买,这样:
ID(auto_increment) reg1 reg2 reg3
______________________________________________
1 value1 value2 value3
1 value1 value2 value3
1 value1 value2 value3
1 value1 value2 value3
答案 0 :(得分:4)
我假设ID
列被定义为主键,在这种情况下,它的整个目的是提供一个唯一的数据来识别每个记录 - 在同一个表中不可能有两个记录使用相同的主键。你到底想要完成什么?如果您想存储购买ID,您应该为它创建一个单独的列并明确存储它 - 自动增量列不是您正在寻找的。 p>
答案 1 :(得分:1)
规范化的方法是使用这样的联合表:
PurchaseId
和ItemId
都设置为自动递增。主键的目的是唯一标识每一行。
阅读Database Normalization,了解如何设计数据库以使其有效。
答案 2 :(得分:0)
删除自动增量并手动输入ID号。您还需要检查它是否设置为主键(即唯一)。确保这是您想要做的,因为删除唯一性可能会导致以后出现问题。
要在输入while循环之前执行此操作,您可以获得最大数字(select max(id) from tablename
),将其递增1,然后将其插入while循环中。
$query = "SELECT max(id)
FROM historial_ventas";
$result = mysql_query($query) or die(mysql_error());
//increase you resulting number
$result = $result + 1
if ($no_of_rows > 0) {
while($row = mysql_fetch_assoc($result)) {
$valueone = $row['first_data'];
$valuetwo = $row['second_data'];
$valuethree = $row['third_data'];
$queryTwo = "INSERT INTO historial_ventas (id, reg1, reg2, reg3)
VALUES('$result', '$ivalueone','$valuetwo','$valuethree')";
$resultTwol = mysql_query($queryTwo) or die(mysql_error());
}
} else {
return false;
}