好的,我已经完成了 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/