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

标签 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 注入(inject)等)但是可以使用上面的代码将多行插入到数据库中,但是我需要的是用户以后能够根据一个 ID 号拉回订单。那么我如何将一个 ID 号插入到这个插入查询中,以便它匹配所有行并且在数据库中绝对是唯一的并且理想情况下是自动递增的(我知道考虑到有多行这将很棘手!)

最佳答案

orders 表中添加一个名为 BatchID 的列。然后,在 PHP 中生成一个 GUID,并相应地修改您的 INSERT 语句。

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

function GUID()
{
    if (function_exists('com_create_guid') === true)
    {
        return trim(com_create_guid(), '{}');
    }

    return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}

关于php - 订购系统 - mysql 中每个订单(不是行)的 ID 号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4105746/

相关文章:

php - 配置路径 "security.access_control"无法覆盖

php - 图片上传安全 - 用 GD 重新处理

php - Jquery OnChange 触发但没有返回数据

PHP - 注册表显示没有错误,但不保存在数据库中

mysql - 一种测试表行是否存在的有效方法

php/mysql 动态表单字段没有插入到我的表中

php - 隐藏值正在传递,而 div 的显示样式为 none 使用 PHP

php - 优化 JavaScript CSS 下载

mysql - 如何使用另一个表中的现有数据和输入值插入新行?

mysql - 满足条件时在同一查询中进行 UPDATE 和 INSERT