自动递增的唯一字符串id


Autoincremented unique string id

我在stackoverflow上读了很多答案,但我没有找到任何与我的问题相关的东西。

这是我的表:

`id` char(11) NOT NULL,
`element` varchar(32) NOT NULL,

我需要使用一个自动递增的唯一字符串id的11个字符(大小写敏感,如果可能的话)和数字作为youtube做:

youtube.com/watch ? v = j5syKhDd64s

youtube.com/watch ? v = YVkUvTmDf3Y

youtube.com/watch ? v = 8 bcdeoklsay

您可能想要hashids之类的东西。他们的页面还链接到其他解决方案。

如果不符合要求,请更详细地描述您的问题。

一种方法是使用这个函数

    function generateRandomString($length = 11) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

,然后将$randomString结果传递给您的查询以添加到DB中。

编辑:如果OP正在寻找字符串,就像他提到的(aaaaaaaaaaa, aaaaaaaaaab, aaaaaaaaaac, aaaaaaaaaad),我建议你检查计算理论。

这是我的代码,我自动增加我唯一的id字符串字段。

case "Add":
    $itemno = $_POST['itemno'];
    $qty = $_POST['qty'];
    $unitprc = $_POST['unitprc'];
    $amt = $_POST['amt'];
    $coopmemid = $_SESSION['kiosk']['is_coopmemID_kiosk'];
    $totamt = 0;
    $totitm = count($itemno);
    $a_empgroid = array();
    for($x=0; $x<$totitm; $x++) {
        $Addquery = "INSERT INTO tb_empgrocery (coopmemID , date_ordered, item_no, qty_ordered, unit_price, amount) 
                     VALUES ('$coopmemid',(NOW()),'$itemno[$x]','$qty[$x]','$unitprc[$x]','$amt[$x]')";
        $atecCoop->query($Addquery);
        $totamt+=$amt[$x];
        $inserted_id = $atecCoop->insert_id;
        array_push($a_empgroid,$inserted_id);
    }
    $Savequery = "INSERT INTO tb_empgroc_master (order_status, date_ordered, total_items, total_amount) VALUES ('Pending', (NOW()), '$totitm', '$totamt')";
    $atecCoop->query($Savequery);
    $empgrocmstid = $atecCoop->insert_id;
    $orderno = date('y-m-').str_pad($empgrocmstid, 10, "0", STR_PAD_LEFT);
    $sql = "UPDATE tb_empgroc_master SET order_no='$orderno' WHERE empgrocmstID='$empgrocmstid'";
    $atecCoop->query($sql);
    foreach($a_empgroid as $empgrocid) {
        $sql = "UPDATE tb_empgrocery SET order_no='$orderno' WHERE empgrocID='$empgrocid'";
        $atecCoop->query($sql);
    }
break;

您可以看到字段oder_no是一个唯一的id (varchar 25)

希望这对你有帮助