用于自动增量的PHP函数,其值已更改

时间:2014-11-13 11:39:03

标签: php function for-loop auto-increment

我有一个要求,我需要以下列格式

插入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插入自动增量值?

由于

3 个答案:

答案 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是名义,主要还是序数的问题(在序数的情况下,是否要求它们是连续的)。