用于更改值自动递增的PHP函数
我有一个要求,我需要以以下格式插入用于更改值自动递增的PHP函数,php,function,for-loop,auto-increment,Php,Function,For Loop,Auto Increment,我有一个要求,我需要以以下格式插入user\u id 13310_userid_1 13310_userid_2 13310_userid_3 在哪里 13310 = $_GET['userid'] //user id from session userid = constant //constant text defined 1/2/3 = autoincrement value 这里的变化是当user\u id更改时,自动增量值将从开始插入,如下所示 13311_userid_1 133
user\u id
13310_userid_1
13310_userid_2
13310_userid_3
在哪里
13310 = $_GET['userid'] //user id from session
userid = constant //constant text defined
1/2/3 = autoincrement value
这里的变化是当user\u id
更改时,自动增量值将从开始插入,如下所示
13311_userid_1
13311_userid_2
13311_userid_2
而不是
13311_userid_4
13311_userid_5
13311_userid_6
如何检查用户id
是否已更改并从1
插入自动增量值
谢谢我不确定您是否需要它,但您可以使用数组来存储每个cont的增量:
$const = 'userid';
$user_id = '13310';
$array_increment[$user_id] =1;
foreach(array('Franck','Robert','You','Me') as $index=>$test){
if($index==2)$user_id = '13311';
if(!isset($array_increment[$user_id])){
$array_increment[$user_id]=1;
}
$increment = $array_increment[$user_id];
echo $user_id.'_'.$const.'_'.$increment.'<br />';
$array_increment[$user_id]++;
}
您可以在临时会话中存储每个用户标识的增量值: 对于每个请求,检查会话中是否已经存在$_GET['userid'],如果没有创建值为零的会话。 增量为1,并使用此值创建字符串以插入到DB中
//set up session if it is not already set
if(!isset($_SESSION['users'][$_GET['userid'])){
$_SESSION['users'][$_GET['userid']=0;
}
$_SESSION['users'][$_GET['userid']=$_SESSION['users'][$_GET['userid']+1;
$user=$_GET['userid'].'_userid_'.$_SESSION['users'][$_GET['userid'];
//insert $user into your DB or permanent storage.
$db->insert($user);
(这应该是一个注释,但有点冗长)
只有当某个数据库出现在这里的某个地方时,您才有意义——但您从未明确说明情况是这样的,也没有说明它是哪个数据库
关系数据库设计(在很大程度上,非关系数据库设计)受规范化规则的约束。这些是描述数据结构的方法,可以防止您做愚蠢的事情。这违反了第一条规则
假设您正确地设计了系统,那么您会将这三个属性保留为单独的字段。但这并不能回答id是标称的、基数的还是序数的问题(对于序数,是否要求它们是连续的)。在您将要说明的内容中?(DB、数组…)您将所有数据存储在哪里?无论如何,您只需要循环遍历数据,将其拆分为一个字符串,在最后一项中使用u,然后获取它的最后一个值。如果是3,则将计数器重置为1。@lolka\u bolka是,您已关闭,数据将作为
user\u id
列的主键插入。但是,考虑到用户id的变化,如何循环这个问题呢?$\u GET['user\u id']
是一个数组,还是它在每个请求中都作为一个值出现?如果是前者,只需将当前值与先前值进行比较,并根据需要进行增量/重置。如果是后者,则需要将值存储在某个位置(DB?)并进行比较。$\u GET['user\u id']
不是一个数组,而是一个值。我们不需要在此处更改常量,但如果$\u GET['user\u id']
发生更改,则需要更改增量值。$\u GET['user\u id']
不是数组,而是一个值。一旦此val从13310
更改为13311
,自动递增编号将重置,计数器将再次设置为1。同样,在您的情况下,您必须将$array_increment存储在某个位置(bdd、txt、xml)并读取值以继续递增如果($index==2)$user_id='13311',这将如何呢代码>行指定我需要传递什么,而不是数组('frank','Robert','You','Me')
<代码>$\u GET['user\u id']
将是单个值。只有当$\u GET['user\u id']
从13310
更改为13311
时,数字才会自动递增。只有当$\u GET['user\u id']
从13310更改为13311时,数字才会自动递增。为什么这么说?无论id是否不同,该数字将每次递增。包含增量的行不处于任何状态。
//set up session if it is not already set
if(!isset($_SESSION['users'][$_GET['userid'])){
$_SESSION['users'][$_GET['userid']=0;
}
$_SESSION['users'][$_GET['userid']=$_SESSION['users'][$_GET['userid']+1;
$user=$_GET['userid'].'_userid_'.$_SESSION['users'][$_GET['userid'];
//insert $user into your DB or permanent storage.
$db->insert($user);