php-在URL中显示ID

时间:2019-03-11 02:33:00

标签: php

在过去的几年中,我一直在尝试获取用户注册到URL中的事件的ID,以便显示该事件的所有详细信息。

我已经尝试过Get data from MySQL database by specific id in url 但这似乎不适合我想要做的事情。 还是我做错了,我在这段代码上有了更多的进步

     <?php
if(isset($_SESSION['user_id'])){
    $userid = $_SESSION['user_id'];
    $QUERY3 = mysqli_query($DB, "SELECT * FROM `registration` WHERE `user_id`='$userid'");
    $GETEVENTZ = mysqli_fetch_array($QUERY3);
}
?>
    <?php 
    $eventid = $GETEVENTZ['event_id']; 
    echo '<li> <a href="leaderboard.php?eventid='.$eventid.'"><i class="icon icon-list"></i><span>Leaderboards</span></a> </li>'
?>

只需尝试获取ID,但即时获取正常页面 网址为

leaderboard.php?eventid=

之后没有ID,没有错误弹出,页面和所有内容都加载,只是不添加ID。似乎找不到问题

4 个答案:

答案 0 :(得分:0)

由于您使用的是:$GETEVENTZ = mysqli_fetch_array($QUERY3);

您的代码期望返回数组。因此,您不能只是简单地使用: $eventid = $GETEVENTZ['event_id'];

如果您希望查询返回一行,则可以使用$eventid = $GETEVENTZ[0]['event_id']作为快速解决方案。

但是处理此问题的正确方法是改用mysqli_fetch_row()

您还可以先转储结果集以调试查询返回的内容。

答案 1 :(得分:0)

不是超级全局会话。使用$ _GET从URL获取信息。

<?php
if(isset($GET['user_id'])){
    $userid = $GET['user_id'];

    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query3 = "SELECT * FROM `registration` WHERE `user_id`=?";

    if($stmt = $mysqli->prepare($query3)) {
      $stmt->bind_param("s", $userid);

      $stmt->execut();
      $result = $stmt->get_result();
    }

}
?>



<?php 

// this section does not demonstrate getting the value from $result
// I will update answer later, must research mysqli more. 
     echo '<li> <a href="leaderboard.php?eventid='.$eventid.'"><i class="icon icon-list"></i><span>Leaderboards</span></a> </li>'
?>

免责声明:我不使用mysqli,所以我的答案是对该部分的最佳猜测。请确保在http://php.net/manual/en/mysqli.prepare.php

处研究如何正确使用准备好的语句

答案 2 :(得分:0)

尝试一下,希望它会起作用。

<?php
$DB = new mysqli("localhost", "my_user", "my_password", "my_db");
/* check connection */
if ($DB->connect_errno) {
    printf("Connect failed: %s\n", $DB->connect_error);
    exit();
}
if(isset($_SESSION['user_id'])) {
    $userid = $_SESSION['user_id'];
    $QUERY3 = "SELECT * FROM registration  WHERE user_id='$userid'";
    $result = $DB->query($QUERY3);
    $GETEVENTZ = $result->fetch_array(MYSQLI_ASSOC);
    $eventid = $GETEVENTZ['event_id']; 
    printf ("%s", $eventid);
}
echo '<li> <a href="leaderboard.php?eventid='.$eventid.'"><i class="icon icon-list"></i><span>Leaderboards</span></a> </li>';
?>

答案 3 :(得分:0)

答案-

会话ID被标记为(userid),而不是(user_id)

然后我说出用户会话是否具有用户ID之后,先打印事件ID,然后显示页面,然后它将我重定向到具有事件ID的正确页面

<?php
    if(isset($_SESSION['user_id'])){
        $GETUSRID = $_SESSION['user_id'];
        $GETRANKD = mysqli_query($DB, "SELECT * FROM `registrations` WHERE `user_id`='$GETUSRID'");
        $GETRD = mysqli_fetch_assoc($GETRANKD);



 $eventid = $GETRD['event_id']; 
    printf ("%s", $eventid);
}
echo '<li> <a href="leaderboard.php?eventid='.$eventid.'"><i class="icon icon-list"></i><span>Leaderboards</span></a> </li>';