Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 事务代码的随机字符串_Php_Regex_Database_Codeigniter_Stored Procedures - Fatal编程技术网

Php 事务代码的随机字符串

Php 事务代码的随机字符串,php,regex,database,codeigniter,stored-procedures,Php,Regex,Database,Codeigniter,Stored Procedures,我想问一下,我正在开发一个使用PHP的网站,目前正在寻找更好的方法 我想为事务代码生成随机字符串 例如:客户购买产品时,必须生成事务代码并将其存储在数据库表中 使用PHP函数来生成它,然后检查数据库表中是否已经存在事务代码,或者我应该创建一个存储过程来完成这项工作吗?您认为哪一个更快?您可以在PHP中使用 像这样的东西就行了 <?php echo "TRANSID-".strtoupper(uniqid()); //Generates a random id every time. 如果

我想问一下,我正在开发一个使用PHP的网站,目前正在寻找更好的方法

我想为事务代码生成随机字符串

例如:客户购买产品时,必须生成事务代码并将其存储在数据库表中

使用PHP函数来生成它,然后检查数据库表中是否已经存在事务代码,或者我应该创建一个存储过程来完成这项工作吗?您认为哪一个更快?

您可以在PHP中使用

像这样的东西就行了

<?php
echo "TRANSID-".strtoupper(uniqid()); //Generates a random id every time.

如果您对此感兴趣,请看一看

我不认为创建随机字符串会成为速度瓶颈,php可以做到这一点。足够好了,因为它“基于当前时间(以微秒为单位)”。但是冲突仍然是可能的(例如,您有多个服务器),尽管很少发生冲突。因此,只需将其设为unqiue索引,如果插入失败,请重试。

您可以使用UUID(通用唯一标识符),它可以用于任何用途,从用户身份验证字符串到支付交易id

“SagePay对交易id使用类似样式的字符串”

UUID是16个八位组(128位)的数字。在其规范形式中,UUID由32个十六进制数字表示,以8-4-4-4-12的形式以连字符分隔的五组显示,总共36个字符(32个字母数字字符和四个连字符)

//呼叫功能

$transationID = generate_uuid();
一些示例输出如下所示:

51B4DE29-3B71-4FD2-9E6C-071703E1FF31
3777C8C6-9FF5-4C78-AAA2-08A47F555E81
54B91C72-2CF4-4501-A6E9-02A60DCBAE4C
60F75C7C-1AE3-417B-82C8-14D456542CD7
8DE0168D-01D3-4502-9E59-10D665CEBCB2

希望它对将来的人有所帮助:)

我也可以用存储过程来实现这一点,对吗?你认为哪个更快?因为在生成事务代码之后,我将检查数据库表中是否已经存在此事务代码。这是一个基于PHP的函数,与后端无关。该函数根据UNIX时间戳生成唯一的字母数字字符串。因此,99.9%将是唯一的,您可以直接将此值推送到您的数据库。谢谢,您启发了我…:D
$transationID = generate_uuid();
51B4DE29-3B71-4FD2-9E6C-071703E1FF31
3777C8C6-9FF5-4C78-AAA2-08A47F555E81
54B91C72-2CF4-4501-A6E9-02A60DCBAE4C
60F75C7C-1AE3-417B-82C8-14D456542CD7
8DE0168D-01D3-4502-9E59-10D665CEBCB2