I was under the impression that just having MySQL generate the primary key via UUID()
would make the key unique across servers, etc.
But, there is no way to fetch the last inserted UUID, which requires that an extra select statement be done each time I insert.
Is it possible to have PHP generate the exact same UUID()
that MySQL would generate?
No, it's not possible to have PHP generate the exact same UUID()
as MySQL because it's a (completely) random number.
It sounds like your problem is that you like using UUID()
in MySQL but don't want to execute an extra query to figure out what the new UUID
is.
So why not have PHP create the UUID
to be used as the primary key in your INSERT
query?? This comment on php.net should show you how to do this.
Using those sample functions:
$uuid = UUID::v4();
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;
Edit: There are several methods on that page which generate different types of UUID
s. v4
is pseudo-random, but you could use a different version or create your own UUID
generator.
I tried the first step: $uuid = UUID::v4();
but it hung my server, so another idea came to mind which I tried as follows:
fetch data from query $sql1 = SELECT UUID() AS uuid ;
then store in variable $uuid
and then use below
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');";
echo "The UUID is: ". $uuid;