2012-02-21 19 views

risposta

9

No, non è possibile avere PHP generare esattamente lo stesso UUID() come MySQL perché è un numero (completamente) casuale.

Sembra che il problema sia che ti piace usare UUID() in MySQL ma non vuoi eseguire una query aggiuntiva per capire che cos'è il nuovo UUID.

Quindi perché non creare PHP UUID da utilizzare come chiave primaria nella query INSERT ?? This comment on php.net dovrebbe mostrarti come farlo.

usando quei campioni funzioni:

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

Edit: Ci sono diversi metodi su quella pagina che generano diversi tipi di UUID s. v4 è pseudo-casuale, ma è possibile utilizzare una versione diversa o creare il proprio generatore UUID.

+0

Hmm, utilizzando questo metodo, dovrei controllare se è un uuid unico in MySQL e se è unico tra i server. Sembra che sia necessario un check-in-unico o un pull di dati in ogni senso? – ina

+1

Se si utilizzano UUID generati a caso, non si avrà questo problema. Statisticamente, se hai generato ** 1 miliardo ** UUID ** ogni secondo per 100 anni **, c'è solo una probabilità del 50% che ** solo uno ** di essi si scontrerà. (Fonte: http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates) Anche se probabilmente non vedrai mai una collisione, sarebbe comunque intelligente rendere l'UUID una chiave primaria in MySQL e sincronizzare i server regolarmente. –

0

Ho provato il primo passaggio: $ uuid = UUID :: v4(); ma ha bloccato il mio server, quindi mi è venuta in mente un'altra idea che ho provato come segue:

recuperare i dati dalla query $ sql1 = SELECT UUID() AS uuid; poi conservare in $ uuid variabile

e quindi utilizzare sotto

$ sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$ uuid}', 'bar');"; echo "L'UUID è:". $ Uuid;

Problemi correlati