Frage

Hallo, ich erstelle ein System, das eine ID und eine UID verarbeitet. Die UID generieren wir zufällig, aber ich stecke ein wenig fest. Ich muss immer eine UID generieren, die derzeit nicht in der Datenbank vorhanden ist, da das Feld ein eindeutiges verwendetes Feld ist auf der Vorderseite, um den echten Ausweis nicht preiszugeben.

Um es noch einmal zusammenzufassen: Ich versuche, eine eindeutige ID zu generieren, die derzeit nicht in der Datenbank vorhanden ist. Der Teil, den ich nicht zum Laufen gebracht habe, ist die Gegenprüfung in der Datenbank, sodass manchmal eine Nummer angezeigt wird, die bereits in der Datenbank vorhanden ist Es sollte nicht im Voraus danken.

Das ist mein Code bisher:

function uniqueID($table) 
{
$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

$possible = '1234567890';
$code = '';
$characters = mt_rand(7,14);
$i = 0;

while($i < $characters) 
{ 

    $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
    $i++;

}

$result = $db->query('
SELECT uniqueID
FROM '.$table.'
WHERE uniqueID = "'.$code.'"
LIMIT 1
');

$totalRows = $result->num_rows;

if(!$result)
{

    return $db->error;

}
else
{

    if($totalRows > 0)
    {

        return uniqueID($table);

    }
    else
    {

        return $code;

    }

}

}
War es hilfreich?

Lösung 6

Ich habe herausgefunden, was das Problem bereits war, als ich jedem erwähnt habe, dass die Codegeneration nicht das Problem war!Das Problem war, dass der Kreuzprüfungen nicht ordnungsgemäß funktionierte.Also alles, was ich tat, wurde diese Schleife entfernt

generasacodicetagpre.

Da er meine einzigartige ID verursachte, um falsch zu sein.

Andere Tipps

Um Unic UID zu generieren, können Sie Zeit verwenden, ich denke, es war eine sehr kleine Chanse, die auf derselben Sekunde in derselben Sekunde hinzugefügt werden, mit zwei zufälligen Daten.

schreiben Sie eine Funktion, die es Ihnen gerne an Sie zurückgibt

generasacodicetagpre.

In PHP gibt es eine Funktion namens uniqid()

http://php.net/manual/en/function.uniqid.php

Ich könnte über das Generieren von IDs sprechen, wie die anderen, aber dies ist nicht Ihre Frage. Ihre Anfrage scheint gut zu sein.Wenn es 0 Reihen zurückgibt, aber Sie scheinen den Code in der Datenbank zu finden, dann sieht es höchstwahrscheinlich nur gleich aus, aber eigentlich nicht.Es könnte von Whitespace gepolstelt werden.

Eine Möglichkeit zum Lösen dabei ist, indem Sie die letzte Zeile Ihrer Benutzerdatenbank auswählen und Ihr Skript aufweisen, um nach dem ID-Feld zu suchen (Sie können dies erreichen, indem Sie eine Auswahlreihenfolge per ID im sekenden Modus ausführen), können Sie diese Informationen verwendenfür randomisierte Zahlen größer als diese ID.

edit

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top