mysql表中有一个字段(demo_field)(varchar)。我想用预定义的前缀来增加这个字段值。例如,我的字段第一个值是demo001。现在,当插入新的值时,我希望增加像demo002, demo003这样的数字。我怎样才能用PHP做到这一点。
发布于 2014-11-04 06:26:51
试试这个-
//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);发布于 2014-11-04 06:15:48
//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
}发布于 2014-11-04 06:42:35
您必须使用INT字段,并在“选择”时间将其转换为任何您想要的格式。
在MySQL中,我们不能将AutoIncrement用于Varchar。
https://stackoverflow.com/questions/26728760
复制相似问题