我有一个要求,我需要以下列格式
插入user_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_id
更改时,自动增量值将从开头插入,看起来像
13311_userid_1
13311_userid_2
13311_userid_2
而不是
13311_userid_4
13311_userid_5
13311_userid_6
如何检查user_id
是否已更改并从1
插入自动增量值?
由于
答案 0 :(得分:0)
我不确定你需要什么,但是你可以使用一个数组来存储每个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]++;
}
将显示:
13310_userid_1
13310_userid_2
13311_userid_1
13311_userid_2
答案 1 :(得分:0)
您可以将每个用户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);
答案 2 :(得分:0)
(这应该是一个评论,但它有点冗长)
如果数据库在这里某处显示,那么你才有意义 - 但是你从未明确说明情况就是这样,也不是哪个数据库。
关系数据库设计(在很大程度上,非关系数据库设计)遵循规范化规则。这些是用于描述数据结构并防止您做蠢事的方法。 打破了第一条规则。
假设您正在正确设计系统,那么您将三个属性保持为单独的字段。但这并不能回答id是名义,主要还是序数的问题(在序数的情况下,是否要求它们是连续的)。