在稍后使用时,将数据库行Id保存在会话中。

18 浏览
0 Comments

在稍后使用时,将数据库行Id保存在会话中。

我正在试图将$row['Id']保存在php会话中,以便在下一个页面上使用这个变量来动态填充$product_id变量。到目前为止,这是我得到的:

query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        SESSION_START();
        $identi = $row['Id'];
        $_SESSION["product_id"] = $identi;
        echo "";
        echo "";
        echo "";
        echo "

" . $row["Product"]. "

" . $row["Samenvatting"]. "" . $_SESSION["product_id"] . ""; echo "

"; echo "

vanaf 10 personen
" . $row["Tijdsduur"] . " uur
vanaf " . $row["VerkoopPP40"] ." p.p. excl btw
"; } } else { echo "0 results"; }?>

正如您所看到的,我正在试图保存$row['Id']。首先,我将此ID保存在$identi变量中,以便可以输出它。然后,我将ID保存在$_SESSION["product_id"]中,并在HTML中稍后输出它。这个方法是有效的。但是,当我点击链接转到下一页时,似乎会话并没有保存。

我无法使用以下代码在下一页上输出product_id


我认为它没有被存储,或者(很可能)我做错了什么?我在stackoverflow上找到了一些关于在数据库查询的另一个部分开始会话的内容:

 0) {
    while($row = mysqli_fetch_assoc($result)) {
        $fotos = $row["Fotomateriaal"];
        $productnaam = $row["Product"];
        $contenttext = $row["WebTekst"];
        $tijdsduur = $row["Tijdsduur"];
        $prijs = $row["VerkoopPP40"];
        $sub = $row["Subcategorie"];
        $cate = $row["Categorie"];
        $seo = $row["SEO_Pagetitle"];
        $youtube = $row["Actief_Avontuur"];
        $_SESSION["product_id"] = $row["Id"];
            }
} else {
    $value = "Geen resultaten";
}       ?>

但是这也没有给我任何结果。有谁知道为什么不起作用?通常,如果我想像平常一样在会话中存储一个变量(只使用PHP和WordPress),一切都正常工作,但这个就不行。非常感谢您的帮助。

0
0 Comments

问题的原因是在循环中重复覆盖了会话变量。解决方法是将会话变量改为数组形式,每次将新的数据添加到数组中。

实际上,您在错误的位置(在while()内)以错误的方式(SESSION_START();)编写了session_start();

在每个php页面的顶部添加session_start();,在<?php之后。

注意:需要session_start();来获取和操作SESSION数据。

您正在使用循环中的$_SESSION["product_id"] = $identi;覆盖您的会话变量。所以,改为$_SESSION["product_id"][] = $identi;

我做了以下更改:$identi = $row['Id']; $_SESSION["product_id"]= array(); $_SESSION["product_id"][] = $identi; var_dump($_SESSION['product_id']); var_dump给出了这个结果:array(1) { [0]=> string(5) "12611" } 但会话只存储了单词array,没有其他内容。

请查看这个链接:stackoverflow.com/questions/41635943/…

0
0 Comments

问题:如何将数据库行的ID保存在会话中以供以后使用?

原因:这个问题的出现是因为保存数据库行的ID在会话中以供以后使用是一个常见需求。在某些情况下,我们需要在页面之间传递数据,并确保数据的完整性和一致性。为了实现这一点,我们需要将数据库行的ID保存在会话中,以便可以在后续的页面中访问和使用它。

解决方法:根据不同的数据库操作类,我们可以使用不同的方法来保存数据库行的ID在会话中。

如果我们正在使用PDO,我们可以使用PDO::lastInsertId方法来获取最后插入的行的ID。例如:

$id = $pdo->lastInsertId();
$_SESSION['row_id'] = $id;

如果我们正在使用Mysqli,我们可以使用mysqli::$insert_id属性来获取最后插入的行的ID。例如:

$id = $mysqli->insert_id;
$_SESSION['row_id'] = $id;

无论我们使用哪种方法,都可以将数据库行的ID保存在会话中,并在以后的页面中使用它。这样我们就可以确保数据的完整性和一致性,并且可以在需要时轻松地访问和使用数据库行的ID。

0