2014-11-04 80 views
2

我在mysql表中有一個字段(demo_field)(varchar)。我想用預定義的前綴增加這個字段值。 例如,我的字段第一個值是demo001。現在,當插入新值時,我想增加數字數字,如demo002, demo003。 如何使用PHP來做到這一點。如何在mysql中增加默認值

+0

在mysql中添加'AUTO_INCREMENT'並省略PHP中的'insert'字段 – 2014-11-04 06:09:43

+0

如何做到這一點?爲此,我們需要設置一個默認值?我也需要字母字符。如果我們給auto_increment,我們不能添加字母字符 – 2014-11-04 06:13:47

回答

3

試試這個 -

//fetch data from table 
$sql = $mysqli->query('select count(demo_field) as total,demo_field from tablename limit 1'); 
$res = $sql->fetch_assoc(); 

//generate string from existing data 
$str = substr($res['demo_field'], 0, 4); 
$dig = str_replace($str, '', $res['demo_field']); 
$dig = $dig+$res['total']; 

//add padding if needed 
$dig = str_pad($dig, 3, '0', STR_PAD_LEFT); 

//concatenate string & digits 
$newStr = $str.$dig; 

var_dump($newStr); 

的另一種方式,而不計

$sql = $mysqli->query('select max(demo_field) as demo_field from demo'); 
$res = $sql->fetch_assoc(); 

$str = substr($res['demo_field'], 0, 4); 
$dig = str_replace($str, '', $res['demo_field']); 
$dig += 1; 
$dig = str_pad($dig, 3, '0', STR_PAD_LEFT); 
$newStr = $str.$dig; 

var_dump($newStr); 

希望這種情況可能與count解決問題。

與最大計數另一種解決方案爲字母數字字符串,並沒有填充 -

$sql = $mysqli->query('select max(cast(substring(demo_field, 5) as unsigned)) as digit,  demo_field from demo'); 
$res = $sql->fetch_assoc(); 

$str = substr($res['demo_field'], 0, 4); 
$dig = $res['digit'] + 1; 
$newStr = $str.$dig; 

var_dump($newStr); 
+0

是的。目前我使用這種方法。我只是想知道插入時是否可以直接(一些如何)增加值。謝謝@sgt – 2014-11-04 06:32:40

+1

你將如何增加一個字符串,而無需在PHP中進行字符串操作? – 2014-11-04 06:35:26

+1

此外還有一個小缺點。考慮到生成號碼並不是一個好主意。因爲如果我們刪除幾個值,然後根據計數生成數字可能會創建重複值 – 2014-11-04 06:37:07

1
//use PHP not mysql 
$pre = 'demo'; 
$num = 0; 
define('MAX', 100); 
for($num = 0; $num < MAX; $num++) 
{ 
    $pre_str = $pre . sprintf("%03d", $num); 
    //insert here 
} 
+1

嗨,這種方法不能使用。我們必須檢查表中已經存在的值,然後增加 – 2014-11-04 06:30:04

+0

...我不知道你想要做什麼然後-..- – lkxiaolou 2014-11-04 06:38:47

0

,你必須使用一個INT領域 和它翻譯成你想在「選擇」時間的任何格式。

在MySQL中,我們不能使用AutoIncrement for Varchar。

+0

這是錯誤的。可以辦到。 – 2014-11-04 06:53:11

+0

你能舉一些例子嗎? – 2014-11-06 07:09:04

+0

http://stackoverflow.com/a/17894239/和同一頁內http://stackoverflow.com/a/26728953/ – 2014-11-06 07:10:31