Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mysql中增加默认值_Php_Mysql_Codeigniter - Fatal编程技术网

Php 如何在mysql中增加默认值

Php 如何在mysql中增加默认值,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在mysql表中有一个字段(demo_字段)(varchar)。我想用预定义的前缀增加此字段值。 例如,我的字段第一个值是demo001。现在,每当插入新值时,我都希望增加数值,如demo002、demo003。 如何使用PHP实现这一点。//使用PHP而不是mysql //use PHP not mysql $pre = 'demo'; $num = 0; define('MAX', 100); for($num = 0; $num < MAX; $num++) { $pre_

我在mysql表中有一个字段(demo_字段)(varchar)。我想用预定义的前缀增加此字段值。 例如,我的字段第一个值是
demo001
。现在,每当插入新值时,我都希望增加数值,如
demo002、demo003
。 如何使用PHP实现这一点。

//使用PHP而不是mysql
//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
}
$pre='demo'; $num=0; 定义('MAX',100); 对于($num=0;$num
试试这个-

//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);

必须使用INT字段 并在“选择”时将其转换为您想要的任何格式


在MySQL中,我们不能对Varchar使用AutoIncrement。

在MySQL中添加
AUTO_INCREMENT
,在PHP中省略该字段
insert
如何操作?为此,我们需要设置一个默认值,对吗?我还需要字母字符。如果我们给auto_递增,我们就不能添加alpha字符,这个方法就不能使用。我们必须检查表中已经存在的值,然后递增…我不知道你们想做什么-是的。目前我使用这种方法。我只是想知道在插入时是否可以直接(以某种方式)增加值。谢谢@sgthow,在php中,你会在不进行字符串操作的情况下增加字符串吗?这也有一个小缺点。计数生成数字不是一个好主意。因为如果我们删除几个值,那么根据计数生成数字可能会创建重复的值,这将是一个问题。那么您应该更喜欢使用sql而不是php来执行此操作。Ok。那就没有别的办法了?正当感谢您在@sgt和本页面内的努力