如何维护最后插入的id并存储在会话中?

时间:2016-12-12 13:26:24

标签: php session session-variables

我编写了一个代码,我必须在整个应用程序中维护最后一个插入的行id而不刷新页面,其中该页面具有分步表单而不重新加载页面。我已经为此编写了代码,但是最后一秒插入了id而不是最后插入的id。这里第一次插入是通过jquery ajax调用发生的,其中一个文件将在该文件中的ajax中调用Am存储会话变量。我的代码如下:

<form class="" id="myFOrm" method="post" id="my_form_id"  >
<input type="hidden" id="user_id" name="user_id" value="<?php echo $fet['id']; ?>">
<div class="form-group">
<input type='text' name=''>
</div>
<div class="form-group">
<input type='text' name=''>
</div>
<a onclick="return submitFunction('1', '2')" >Submit</a>

我的js代码是:

function submitFunction(current, next) {
var data = new FormData($('#myFOrm')[0]);/
  $.ajax({
        type:"POST",
        url:"insert.php",
        data:data,
        contentType: false,
        cache: false,
        processData: false,
        async:false,
        dataType: 'json',
        success:function(response)
        {
            alert(response);
        }
}

insert.php

<?php
 session_start();
 $sql = "INSERT INTO table_name(col1,col2,col3,col4)
        VALUES ('".$val1."','".$val2."', '".$val3."', '".$val4."')";
 if ($conn->query($sql) === TRUE)
{
    $my_id = mysqli_insert_id($conn);

    unset($_SESSION['my_id']);

    $_SESSION['my_id'] = $my_id;
    echo $_SESSION['my_id'];
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

我需要的会话值的下一个表单是:

<form id="myFOrm1" class="form-label-left" method="post" id="my_form_id">
<input type="hidden" id="user_id" name="user_id" value="<?php echo $fet['id']; ?>">
<input type="hidden" id="my_id" name="my_id" value="<?php echo $_SESSION['my_id']; ?>">
<div class="form-group">
<input type="text" name="field1">                                                        
</div>
<div class="form-group">
<input type="text" name="field2">                                                         
</div>
<div class="form-group">
<input type="text" name="field3">                                                         
</div> 

任何人都可以告诉我,我做错了什么?提前谢谢。

3 个答案:

答案 0 :(得分:0)

请删除此

unset($_SESSION['my_id']);

答案 1 :(得分:0)

试试这个:

<?php
 session_start();
 $sql = "INSERT INTO table_name(col1,col2,col3,col4)
        VALUES ('".$val1."','".$val2."', '".$val3."', '".$val4."')";

$result = $conn->query($sql);
if (!$result) {
    echo "Error: " . $sql . "<br>" . $conn->error;
} else {
    while ($raw = $conn->mysqli_fetch_array($result)) {
        $object_array[] = static::instantiate($row);
    }
    $_SESSION['my_id'] = $object_array->first()->id;
    echo $_SESSION['my_id'];
}

你必须编写实例化方法才能在:

中调用它
private static function instantiate ($record) {
    $object = new static;
    foreach($record as $attribute=>$value) {
        if($object->has_attribute($attribute)) {
            $object->$attribute = $value;
        }
    }
    return $object;
}

显然,在您的表格模块中,您必须提供可填写的字段列表&#39;

即。

<?php 
    class User extends DatabaseObject {
        public static $table_name = "users";
        public static $fillable = array('id', 'username', 'full_name', 'email', 'dob');

    }

答案 2 :(得分:-3)

你必须首先将id插入数据库,然后如果你想获取它然后获取它,之后你在那个地方插入另一个id