在过去的几年中,我一直在尝试获取用户注册到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。似乎找不到问题
答案 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>';