订购系统 - mysql中每个订单的id号(不是行)

时间:2010-11-05 12:14:50

标签: php mysql insert unique

好吧我已经完成了98%的代码,但在最后一点上苦苦挣扎。我正在创建一个订购系统,我从一个页面获取值,将它们发送到一个php页面并将它们插入到这样的mysql数据库中:

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die("Cannot connect to mysql server");
           mysql_select_db($dbname) or die("Cannot select database");

            if (isset($_POST['data']) && is_array($_POST['data'])) {
                foreach ($_POST['data'] as $row => $data) {
                    $result = mysql_query("INSERT INTO orders (id,project_ref,supp_short_code,om_part_no,description,quantity,cost_of_items,cost_total) VALUES('', '".$data['project_ref']."', '".$data['supp_short_code']."', '".$data['om_part_no']."', '".$data['description']."', '".$data['quantity_input']."', '".$data['cost_of_items']."', '".$data['cost_total_td']."') ") or die(mysql_error());
                }
            }

哪个好(我知道我不能防止sql注入等)但是使用上面的代码可能会有多行插入到数据库中,但我需要的是用户以后能够根据一个身份证号码撤回订单。那么我如何在这个插入查询中插入一个id号码,以便它匹配所有行,并且在数据库中绝对是唯一的,理想情况下自动递增(我知道考虑到多行,这将是棘手的!)

3 个答案:

答案 0 :(得分:2)

在名为orders的{​​{1}}表格中添加一列。然后,在PHP中生成GUID,并相应地修改BatchID语句。

See here了解有关生成GUID的详细信息。

INSERT

答案 1 :(得分:1)

假设您的'id'字段用于保存每个订单的自动递增ID,您将需要在当前插入语句之前添加一个新插入,这将仅添加一个记录到具有自动递增主要的表键。然后使用这个新的主键并将其与当前表格相关联,而不是当前的“id”或当前的“id”字段。

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die("Cannot connect to mysql server");
       mysql_select_db($dbname) or die("Cannot select database");

        if (isset($_POST['data']) && is_array($_POST['data'])) {
            result = mysql_query("INSERT INTO orders_to_order SET order_primary = NULL");
            $orderId = mysql_insert_id();
            foreach ($_POST['data'] as $row => $data) {
                $result = mysql_query("INSERT INTO orders (id,project_ref,supp_short_code,om_part_no,description,quantity,cost_of_items,cost_total) VALUES(".$orderId.", '".$data['project_ref']."', '".$data['supp_short_code']."', '".$data['om_part_no']."', '".$data['description']."', '".$data['quantity_input']."', '".$data['cost_of_items']."', '".$data['cost_total_td']."') ") or die(mysql_error());
            }
        }

答案 2 :(得分:1)

在这种情况下我要做的是有两个表,ordersorder_detail

orders表格包含grand totalsorder datecustomer id等。

order_detail表将为每个单独的项目添加一个条目.. part_noquantitycostextended_cost但会链接回{ {1}} orders表格。

你最终会选择:

order_id