我编写了一个代码,我必须在整个应用程序中维护最后一个插入的行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>
任何人都可以告诉我,我做错了什么?提前谢谢。
答案 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