2

我有一个包含 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
4

3 回答 3

5

我假设该ID列被定义为一个主键,在这种情况下,它的全部目的是提供一个唯一的数据来识别每条记录——不可能在同一个表中有两条具有相同主键的记录。你到底想完成什么?如果您想存储购买 ID,您应该为其创建一个单独的列并明确存储它 - 自动增量列不是您要查找的内容。

于 2012-06-11T03:33:00.883 回答
2

规范化的方法是使用这样的联合表:

采购系统

两者PurchaseIdItemId都设置为自动递增。主键的目的是唯一标识每一行。

更新:客户

阅读数据库规范化,了解如何设计有效的数据库。

在此处输入图像描述

于 2012-06-11T03:46:59.220 回答
0

去掉自动增量,手动输入id号。您还需要检查它是否设置为主键(即唯一)。确保这是您想要做的,因为删除唯一性可能会导致以后出现重复问题。

要在进入 while 循环之前执行此操作,您可以获得最大数 ( select max(id) from tablename),将其加一,然后将其插入 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;
}
于 2012-06-11T03:33:32.887 回答