gpt4 book ai didi

php : Problems getting the current session id or mysqli_insert_id()

转载 作者:行者123 更新时间:2023-11-29 23:44:07 28 4
gpt4 key购买 nike

大家好,我到处搜索答案,但没有任何内容满足代码:/

这是我的数据库表:

1   Form_ID int(11)     AUTO_INCREMENT  
2 identifiant varchar(10)
3 Ch varchar(6)
4 Date date
5 Unite varchar(10)
6 Catsoin varchar(30)
7 Soin varchar(30)
8 Duree varchar(10)
9 Debutsoin time
10 Finsoin time

我通过 php 表单在数据库中进行注入(inject),并且我的插入工作得很好。但为了提高效率,我需要检索用户当前的 Session_id

这就是我创建的表单:' $_SESSION['id']=$_POST['Identifiant'];'这种使用的问题是,当重新加载页面时,浏览器会创建一个新 session ,然后释放 session ID,因此此方法对我不起作用。

这就是 mysqli_insert_id() 发挥作用的地方。在数据库表中,我创建了 AUTO_INCRMENT 属性 Form_ID ,这是独一无二的。因此,我需要使用 mysqli_insert_id() 来捕获在客户端进行插入时创建的唯一 Form_ID。那是我没有成功的尝试:文件:InsertionBD.php

<?php

include('include/connexion.php');

$query = "Insert into `formulaire`";
$id = mysqli_insert_id($connexion);

IF(isset($_POST['UnitList'])... and so on


?>

并尝试在此处重新捕获此插入的 Id。If(isset()) 函数对输入类型 Button 使用react,因此当用户单击它时,会在 php 服务器端产生 react ,在这种特殊情况下,我需要 mysqli_insert_id( )** 上类文件:** Form.php

session_start();
include('include/config.php');
include('include/connexion.php');
$id=mysqli_insert_id($connexion);

$result = mysqli_query($connexion,"SELECT `identifiant`,`Ch`,`Date` FROM `formulaire` where
`Form_ID` = '".$id."'
");

If(isset($_POST['SelectID']))

{

//$_SESSION['id'] = mysqli_insert_id($connexion); -> not working since Session reload
echo "processing...<br/>";
echo "ID of last inserted record is: ".mysqli_insert_id($connexion);
while($row = mysqli_fetch_array($result))
{
$Recupid = $row['identifiant'] ;
$RecupCh = $row['Ch'] ;
$RecupDate = $row['Date'];
echo "<br><b>Votre identifiant :</b>". $Recupid.
"<br><b> Le code horaire choisi :</b> ".$RecupCh.
"<br><b> La date de la prestation : </b>".$RecupDate.
"<br><b> L'horaire de la prestation : </b>".$debut." <b>à</b> ".$fin ;
echo "<br>";

}
}
else
{
//I used superglobal $_Sessions before this code on this page but I did not show the code to simplify the view but session works fine
echo "<b>Your ID :</b>".$_SESSION['id']."<br />";
echo "<b>Your Code horaire :</b>".$_SESSION['Code']."<br />";
echo "<b>Your Date : </b>".$_SESSION['Date']."<br />";
echo "<b>Your First Plage horaire :</b>".$_SESSION['Debut']."<br />";
echo "<b>Your Second Plage horaire :</b>".$_SESSION['Fin']."<br />";
}

返回值为:

正在处理...最后插入的记录ID为:0

所以我明白我的 mysqli_insert_id() 函数没有指向任何内容吗?请问如何取回具体的Form_ID?

提前感谢您的帮助

最佳答案

来自手册http://php.net/manual/en/mysqli.insert-id.php

The mysqli_insert_id() function returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the AUTO_INCREMENT attribute, this function will return zero.

使用mysqli_insert_id()之前运行的最后一个查询是选择

$result = mysqli_query($connexion,"SELECT `identifiant`,`Ch`,`Date` FROM `formulaire` where 
`Form_ID` = '".$id."'
");

因此预期返回将为 0

运行插入后,您需要立即获取mysqli_insert_id()的值。

编辑

The If(isset()) function reacts to a input type Button, so that when the user click on it creates a reaction in the php server side

也许您可以考虑将 id 添加到输入按钮提交的表单中,以便您可以访问它发布到的页面上的值?

也许使用隐藏字段,例如:

<input type="hidden" name="formulaire_id" value="<?php echo $id;?>" />

关于php : Problems getting the current session id or mysqli_insert_id(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26036034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com