यूआरएल में PHP अद्वितीय पहचान फ़ील्ड - PHP

मुझे दुविधा है। मुझे url में दिखाने के लिए अपनी डेटाबेस तालिका में अद्वितीय स्ट्रिंग की आवश्यकता है (मैं url में आईडी नहीं दिखाता)।

मैं php अद्वितीय स्ट्रिंग में उत्पन्न करना चाहता हूं जांचें कि यह नया उत्पन्न नहीं होने पर तालिका में अद्वितीय है।

8 वर्णों की लंबाई वाली स्ट्रिंग के प्रदर्शन के संदर्भ में और बड़ी संख्या में पंक्तियों (लगभग 100,000 पंक्तियों) के साथ आप क्या सोचते हैं।

उत्तर:

उत्तर № 1 के लिए 1

आप php का उपयोग कर एक अद्वितीय आईडी बना सकते हैं uniqid()

एक नई आईडी उत्पन्न करते समय, यह देखने के लिए डीबी जांचें कि यह मौजूद है या नहीं। यदि ऐसा होता है, तो एक नया बनाएं। मान लें कि आप डेटाबेस में उस कॉलम पर एक इंडेक्स सेट अप करते हैं, ये चेक बहुत महंगा नहीं होंगे।

छद्म (-श) कोड में:

while (true) {
$id = uniqid();

if (!id_exists_in_db($id)) // we have a unique id
break;
}

उत्तर № 2 के लिए 1

इसके अलावा एक अनूठी कुंजी पैदा करने के बजायआईडी, आप एक ऐसा फ़ंक्शन भी बना सकते हैं जो आईडी को स्ट्रिंग में है या एन्कोड करता है। उदाहरण के लिए, आप पूर्णांक को 8 वर्ण हेक्साइडसिमल प्रतिनिधित्व में परिवर्तित कर सकते हैं। यदि आप चाहें तो आप इसे थोड़ा और जटिल बना सकते हैं, लेकिन फिर भी, यह एक ऐसा फ़ंक्शन लिखना काफी आसान है जो एक निश्चित सूत्र का उपयोग करता है ताकि संख्या 8 अक्षरों को परिवर्तित किया जा सके और इसके विपरीत। आपको स्टोर करने की आवश्यकता नहीं है यह अतिरिक्त डेटा, और आपको अद्वितीय मूल्य के बारे में चिंता करने की ज़रूरत नहीं है।

<?php

function translate($key, $back)
{
$key = str_pad($key, 8, "0", STR_PAD_LEFT);
$a = array("1","2","3","4","5","6","7","8","9","0");
$b = array("a","b","c","d","e","f","g","h","i","j");
if ($back) {$c = $b; $b = $a; $a = $c;}
return str_replace($a, $b, $key);
}

function encode_id($int)
{
return translate($int, false);
}

function decode_id($key)
{
return (int)translate($key, true);
}

$key = encode_id(40000);
$int = decode_id($key);
echo $key;
echo "<br>";
echo $int;

संबंधित सवाल
सबसे लोकप्रिय