PDO选择WHERE(会话变量)


PDO select WHERE (session variable)

我想要一个页面显示与前一页上随机设置的id_slogan对应的所有结果。因此,在第一页上,从数据库liste_slogans生成一个随机信息,其id保存在$_SESSION变量中:

<?php
    $bdd=new PDO('mysql:host=localhost;dbname=slogans', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $reponse = $bdd->query('SELECT id, slogan, compagnie FROM liste_slogans ORDER BY rand() LIMIT 1,1');
    header("Content-type: text/html;charset=UTF-8");
    while ($donnees = $reponse->fetch())
    {
        echo '<p class="apparition1" element style="color:aqua">' . ($donnees['slogan']) . ' <element style="color:transparent">' . ($donnees['id']) . '' . ($donnees['compagnie']) . '</element style></p>';
        $_SESSION['id_slogan']=$donnees['id'];
        $_SESSION['compagnie']=$donnees['compagnie'];
        $_SESSION['slogan']=$donnees['slogan']; 
    }                   
?>

在另一页上,我想显示DB entrees中具有与第一页上设置的会话变量匹配的id_slogan的所有条目。我试过这个和许多其他的事情,但似乎没有工作:

<?php
    try
    {
        $bdd=new PDO('mysql:host=localhost;dbname=slogans;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }   
    $nbid = $_SESSION['id_slogan'];
    $reponse=$bdd->query('SELECT pseudo, entree FROM entrees WHERE id_slogan = '.$nbid' ORDER BY ID DESC LIMIT 0, 50');
    while ($donnees=$reponse->fetch())
    {
        echo '<h4 class=resultats><strong>' . htmlspecialchars($donnees['entree']) . ' </strong></h4> <p class=resultats> ' . htmlspecialchars($donnees['pseudo']) . '</p>';
    }
    $reponse->closeCursor();
?>  
有谁能帮我一下吗?

编辑:实际上有3页涉及到这一点,我开始会议的每一个;我在最后一页结束了,在它的最后。

在理想的情况下,PHP可以检测到您想要使用会话并表现良好,但它没有。

在使用会话变量的页面上,您缺少

session_start();

使用会话变量(以及您拥有的任何其他变量)将此直接放在两个页面的开始<?php标记下

看到session_start

session_start()创建会话或恢复当前会话通过GET或POST请求传递的会话标识符,或通过饼干。