在会话中保存数据库行Id以供稍后使用

时间:2017-01-13 12:14:10

标签: php mysql session

我正在尝试将行$row['Id']保存在php会话中,以便我可以在下一页上使用此变量让它动态填充$product_id变量。

到目前为止,这就是我所拥有的:

<?php $sql = "SELECT * FROM assortiment WHERE Categorie = '$productid' ORDER BY Id DESC ";
$result = $conn->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 "<a href='/dbtest/dinner/amsterdam/".$row["Slug"]. "/" . $row["Id"] . "'><div class='products'><div class='col-sm-3'><div class='product-img'>";
        echo "<img src='http://www.example.nl/Uploaded_files/Thumbs/" .$row['Fotomateriaal']. ".jpg'>";
        echo "</div></div><div class='col-sm-6'>";
        echo "<div class='h2-container'><h2>" . $row["Product"]. "</h2></div>" .  $row["Samenvatting"]. "" . $_SESSION["product_id"] . "";
        echo "</div><div class='col-sm-3'><div class='col-sm-12 text-right'>
                    <div class='border'>
                        <p style='margin-bottom:20px;width:30px;'><i class='fa fa-heart' aria-hidden='true'></i></p>
                    </div>
                </div>";
        echo "<table>
                <tr>
                    <td><i class='fa fa-users' aria-hidden='true'></i></td>
                    <td><p>vanaf 10 personen</p></td>
                </tr>
                <tr>
                    <td><i class='fa fa-clock-o' aria-hidden='true'></i></td>
                    <td>" . $row["Tijdsduur"] .  " uur</td>
                </tr>
                <tr>
                    <td><i class='fa fa-euro' aria-hidden='true'></i></td>
                    <td>vanaf " . $row["VerkoopPP40"] ." p.p. <small>excl btw</small></td>
                </tr>
            </table></div></div></a>";
    }
} else {
    echo "0 results";
}?>

正如您所看到的,我正在尝试保存$row['Id']。首先,我在$ identi变量中创建此ID,以便我可以回应它。然后我将ID保存在$_session["product_id"]中,稍后在HTML中回显。这有效。但是,当我点击链接转到下一页时,看起来似乎没有保存会话。

我无法使用以下内容回显下一页的product_id

<?php
    if(isset($_SESSION['product_id'])){
    echo $_SESSION['product_id'];
    };
?>

我认为它没有被存储,或者(可能)我这样做是错的?我发现堆栈溢出的东西在数据库查询的另一部分内启动了会话:

<?php 
    $sql = "SELECT * FROM assortiment WHERE Subcategorie = '$product_id'";
    $result = mysqli_query($conn, $sql);
    if (mysqli_num_rows($result) > 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),但这不会起作用。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

实际上你以错误的方式(session_start();)和错误的地方(SESSION_START();内)写while()

在每个php页面上,在session_start();

开始后,在每个页面的顶部添加<?php

注意: - session_start();需要获取+操作SESSION数据

答案 1 :(得分:-1)

这将只保存行中的最后一个信息。您必须在查询中保存该行。