我的印象是,让MySQL通过UUID()
生成主键会使密钥在服务器等之间唯一。
但是,there is no way to fetch the last inserted UUID,这要求每次插入时都要执行额外的select语句。
是否可以让PHP生成与MySQL生成的完全相同的UUID()
?
答案 0 :(得分:12)
不,让PHP生成与MySQL完全相同的UUID()
是不可能的,因为它是一个(完全)随机数。
听起来你的问题是你喜欢在MySQL中使用UUID()
但是不想执行额外的查询来弄清楚新的UUID
是什么。
那么为什么不让PHP创建UUID
作为INSERT
查询中的主键? This comment on php.net应该告诉你如何做到这一点。
使用这些示例函数:
$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
修改:该页面上有多种方法可生成不同类型的UUID
。 v4
是伪随机的,但您可以使用其他版本或创建自己的UUID
生成器。
答案 1 :(得分:0)
我尝试了第一步:$uuid = UUID::v4();
但它挂了我的服务器,所以我想到了另一个想法,我尝试如下:
从查询$sql1 = SELECT UUID() AS uuid ;
中获取数据
然后存储在变量$uuid
然后使用下面的
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;