9

我的印象是,让 MySQL 通过生成主键UUID()会使密钥在服务器之间是唯一的,等等。

但是,无法获取最后插入的 UUID,这需要每次插入时都执行一个额外的 select 语句。

是否可以让 PHP 生成与 MySQL 生成的完全相同的UUID()内容?

4

2 回答 2

14

不,PHP 不可能生成与UUID()MySQL 完全相同的内容,因为它是(完全)随机数。

听起来你的问题是你喜欢UUID()在 MySQL 中使用,但不想执行额外的查询来找出新UUID的。

那么为什么不让 PHP 创建UUID用作INSERT查询中的主键呢? php.net 上的此评论应向您展示如何执行此操作。

使用这些示例函数:

$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;

编辑:该页面上有几种方法可以生成不同类型的UUIDs。 v4是伪随机的,但您可以使用不同的版本或创建自己的UUID生成器。

于 2012-02-21T16:12:00.680 回答
0

我尝试了第一步:$uuid = UUID::v4();但它挂起了我的服务器,所以我想到了另一个想法,我尝试如下:

从查询中获取数据$sql1 = SELECT UUID() AS uuid ;
然后存储在变量中$uuid

然后在下面使用

$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
于 2014-04-27T00:00:10.397 回答