php aracılığıyla mysql birincil anahtar olarak kullanılabilen benzersiz bir karma değer üretmek

3 Cevap php

Benim tabloda uçlar için otomatik artış değerini kullanıyorum. Ama mysql olarak birincil anahtar eklemek için php (küçük ve yeterli değil GUID veya UUID) benzersiz bir değer oluşturmak için başka bir yolu var mı?

Temelde ben bir sonraki otomatik artış değerini alamıyorum sanırım PK olarak kullanılan değerini almak istiyorum, ancak otomatik artışı kullanarak?

Bana bu konuda bir şey tavsiye edin?

Teşekkürler.

3 Cevap

Sen son eklenen değiştirmemesi değerini alabilirsiniz. Sen mysql_insert_id fonksiyonunu istiyorum:

<?php
    mysql_query("INSERT INTO mytable (product) values ('blah')");
    printf("Last inserted record has id %d\n", mysql_insert_id());
?>

PHP bir karma oluşturmak olan ve bir birincil anahtar karma olabilir oluşturduğu gibi (muhtemelen çok nadiren de olsa) o kullanarak sorun yinelenen bir anahtar olabilir. Böylece, karma kullanımda zaten olup olmadığını görmek için kontrol etmek zorunda, ve kullanımda olmadığı kadar fazla üretmek istiyorum.

Eğer çalıştı uniqid? Var

Ben çeşitli karmaşıklık rastgele PWDS üretmek için bir fonksiyon inşa ...

Sonra kullanmış ...

$ Ukey = GeneratePassword (16,2) GeneratePassword (16,2).;

Ben bir url bir id geçmek istiyorum ve bunu tahmin etmek zor istediğiniz şeyler için. Muhtemelen o eşsiz ve tahmin zor yapmak için de rasgele bir dize bir microtime borular ile arka arkaya olabilir. Bu ticaret seviye uygulamalar için yeterince güçlü olup olmadığını bilmiyorum. Ben SSN veya ilgili CCN'e gibi bir şey yok daha fazla kullanıcı hesabı yönetimi için kullanabilirsiniz.

Fonksiyonu / / ---- başlangıç

fonksiyonu GeneratePassword (= 6 $ uzunluk, $ seviyesi = 2) {

list($usec, $sec) = explode(' ', microtime());
srand((float) $sec + ((float) $usec * 100000));

$validchars[1] = "0123456789abcdfghjkmnpqrstvwxyz";
$validchars[2] = "0123456789abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$validchars[3] = "0123456789abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%&*-+";
$validchars[4] = "0123456789abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_-+=/";

$password  = "";
$counter   = 0;

while ($counter < $length) {
    $actChar = substr($validchars[$level], rand(0, strlen($validchars[$level])-1), 1);

    // add current char to pwd string if it's not already in the pwd
    if (!strstr($password, $actChar)) {
        $password .= $actChar;
        $counter++;
    }
}
return $password;

}