2012-02-21 19 views

答えて

9

いいえ、(完全に)乱数であるため、PHPにはMySQLとまったく同じUUID()を生成させることはできません。

あなたの問題は、UUID()をMySQLで使用するのが好きですが、新しいクエリを実行して、新しいUUIDが何であるか把握したくないということです。

なぜ、INSERTクエリでプライマリキーとして使用されるUUIDをPHPで作成しないのですか? 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ジェネレータを作成することができます。

+0

ええと、この方法を使うと、それがMySQLのユニークなuuidであるかどうか、それがサーバ間でユニークであるかどうかをチェックする必要があります。ユニークなチェックやユニークなチェックが必要ですか? – ina

+1

ランダムに生成されたUUIDを使用すると、この問題は発生しません。統計的には、あなたが** 100億** UUID **を毎秒100秒**生成した場合、**わずか1つ**が衝突する確率はわずか50%です。 (出典:http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates)おそらく衝突は見られませんが、UUIDをMySQLの主キーにしてサーバーを定期的に同期させることは依然として賢明です。 –

0

私は最初のステップを試しました:$ uuid = UUID :: v4();私のサーバーを掛けてしまったので、別の考え方が思い浮かびました。

クエリからデータを取得する$ sql1 = SELECT UUID()AS uuid; は、変数$のUUIDに

を格納し、

$のSQL = "MYTABLE(UUID、FOO)VALUES( '{$のUUID}'、 'バー')中に挿入します。" の下に使用します。 echo "UUIDは:"です。 $ uuid;