2013-12-19 48 views
0

你好,我想創建一個帶有前綴的唯一ID,然後想在數據庫中輸入它,客戶ID字段需要是主要的,因爲我嘗試了很多東西,但所有得到了失敗,因爲MySQL是不是讓我作出這樣的場主, 我試圖創建客戶ID這樣 $pre="brbn_"; $v=0001; id=$pre.$v;我想在php中創建一個唯一的客戶ID

這裏MySQL查詢來此查詢後。

+0

你可以使用隨機號碼或帶有前綴的時間,例如'brbn_'.time() –

+0

您是否可以不將前綴和唯一ID存儲在單獨的列中? – Strawberry

+0

如果我將使用唯一的身份證,那麼我將如何搜索用戶再次和獨特也不是我的解決方案.... – epicwebsol

回答

0

您可以在數據庫的唯一字段中使用字符串,但不能將其作爲主要字符串,因爲您的ID不是數字。 MySQL使用主要可能自動增量或類似的東西。 您可以創建主ID和唯一用戶ID並將其存儲在數據庫中。

CREATE TABLE IF NOT EXISTS `test` (
      `id` int(11) NOT NULL, 
      `uid` varchar(50) DEFAULT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `uid` (`uid`) 
) 
ENGINE=MyISAM DEFAULT CHARSET=utf8; 


INSERT INTO `test` (`id`, `uid`) VALUES (1, 'brbn_0001'),(2, 'brbn_0002'); 
當然,你應該進行實地ID自動增量:)

,因爲你已經創建你的數據庫,只是想增加你的$ V不得不從DB頭

SELECT uid FROM test DESC LIMIT 1 

這個選擇的

返回最後一個條目...現在你可以使用PHP來剪切你的字符串。 嘗試一些像

$var = explode("_",$result); 

中是$ var [1]你有1

現在增加值是$ var [1] ++;

現在你必須把數回4號

$var = str_pad($var[1], 4); 

你能做到這一點的兩排像

$var = explode("_",$result); 
$var = str_pad(++$var[1], 4); 

比添加前綴,並插入到你的數據庫

+0

我也嘗試過獨特,但之前得到了錯誤,但現在我想要生成一個客戶ID,這將像brbn_and某些值像任何沒有。或者我可能會在這裏建議的任何其他內容。 – epicwebsol

+0

在這裏你看到一個ID(主)和一個UID(唯一)的測試數據庫,我添加2行,每個有2個值(ID,UID)....uid是varchar,這意味着它可以包含像brbn_這樣的字符和數字,如1 – Dwza

+0

我已經創建了表和數據庫已經我需要一種方法來生成唯一的ID,因爲我選擇它的方式總是會添加brbn_0001導致$ v從不得到改變,並作爲registration.php被加載它會得到相同的結果.. – epicwebsol