2013-07-20 55 views
0

我正在尋找一個php腳本,它可以爲我的項目生成一個唯一的10位數字(數字)。在PHP中生成電子引腳或隨機唯一編號MYsql

我對Php知之甚少,這裏是我的代碼,請幫忙。

此處的代碼是生成一個隨機引腳並存儲在數據庫表lucky_coupon_pins中。


//檢查生成按鈕

if (isset($_POST['generate_pin'])) { 

//生成隨機數

$random_number=mt_rand(); 

//一旦如果它存在於表中,如果是的話產生的代碼被生成的校驗再次繼續前進

$row_count = $db->row_count("SELECT * FROM " . config_item('cart', 'table_lucky_coupon_pins') . " WHERE lucky_pin = '" . $random_number . "'"); 

if($row_count>0) 

{ 
$random_number=mt_rand(); 
$row_count = $db->row_count("SELECT * FROM " . config_item('cart', 'table_lucky_coupon_pins') . " WHERE lucky_pin = '" . $random_number . "'"); 
} 

//插入到數據庫

$values = array(
       'lucky_pin'   => $random_number, 
       'lucky_pin_value' => $_POST['lucky_pin_value'] 

      );  

      $db->insert(config_item('cart', 'table_lucky_coupon_pins'), $values); 

我在這裏檢查一次生成的PIN,如果它已經存在另一個引腳generated..I不知道的是,這到底獨特,也已生成的PIN有時是9位數字,有時是10位數字。

回答

0

mt_rand()應該是相當不錯的(或者使用原生php函數返回隨機數的最好方法),所以對它有一定的信心。此外,如果你只想要10位號碼,請嘗試:

$random_number = mt_rand(1000000000, 9999999999); 
1

正如manual mt_rand()指出有兩個參數,一個最小和最大值,因此要獲得一個10位的隨機值,使用:

$random_number = mt_rand(1000000000, 9999999999); 

$random_number = mt_rand(1,9); 
for ($i = 0; $i < 9; $i++) { 
    $random_number .= mt_rand(0,9) 
} 

是它獨特之處?事實上,它的可能性很高,但不是肯定的。 (如果它已經存在,則只檢查一次。)您可以考慮使用例如循環

$row_count = 1; 
while ($row_count > 0) { 
    $random_number = mt_rand(1000000000, 9999999999); // i prefer the other option but this one is somehow shorter 
    $row_count = $db->row_count("SELECT * FROM " . config_item('cart', 'table_lucky_coupon_pins') . " WHERE lucky_pin = '" . $random_number . "'"); 
} 
0

下面是用於生成PIN碼

function GeneratePinCode($chars){ 
    $pin=""; 
    while ($chars!=0){ 
     $pin .=rand(0,9); 
     $chars--; 
    } 
    return $pin; 
} 

至於銷碼的唯一性的簡單功能,可以存儲每個要在數據庫中產生銷和各時間運行檢查你生成一個新的。