【问题标题】:Retrieve current users id from database to use in new tabel从数据库中检索当前用户 id 以在新表中使用
【发布时间】:2014-01-17 21:58:24
【问题描述】:

我有一个个人资料页面,用于检索用户信息。

Profile.php

  <?php
require 'core/init.php';

if(!$username = Input::get('user')) {
    Redirect::to('index.php');
} else {
    $user = new User($username);

    if(!$user->exists()) {
        Redirect::to(404);
    } else {
        $data = $user->data();
    }
    ?>

    <h3><?php echo escape($data->username); ?></h3>
    <p>Membership No: <?php echo escape($data->id); ?></p>
    <p>Full name: <?php echo escape($data->name); ?></p>
    <p>Date of birth: <?php echo escape($data->dob); ?></p>
    <p>Location: <?php echo escape($data->location); ?></p>
    <p>Join date: <?php echo escape($data->joined); ?></p>



    <?php

我想检索我的用户的 id 以插入到我的订单页面的另一个表中,到目前为止我有这个

oerder.php

    <?php
session_start();
require 'core/init.php';

$Band_id = mysql_real_escape_string($_POST['band']);
$user_id = $_SESSION['id'];

 $sql = "INSERT INTO orders (band_id,user_id) VALUES('$Band_id', '$user_id')";
mysql_query ($sql, $linkme)
    or die ("could not add to database");
?>

当前 $user_id = $_SESSION['id']; 没有将用户 ID 放在我的表中 orders

我试过了

<?php echo escape($data->id); ?>

$user_id = $_GET['id'];

但它不起作用,有人知道如何检索用户 id 以便我可以将其插入数据库吗?

【问题讨论】:

  • 你在页面上看到了什么?
  • 您是否已经转储了 $_SESSION['id'] 的值?确保这是正确的
  • 在页面上它工作正常,但是当我检查我的数据库时,输入了乐队 ID,但没有输入用户 ID
  • user_id 列的类型是什么?而且我仍然怀疑 $user_id 的价值。请先检查。
  • 该列是 id 并且它是一个 varchar

标签: php mysql session insert


【解决方案1】:

您可以做的是将用户数据保存到会话中

$_SESSION['user_data'] = $user->data();

您可以在检查$_SESSION['user_data'] 已设置后将其分配回$data,否则重新查询模型。

session_start() 也应该位于您要为其保留会话的每个文件的顶部。

比如:

Profile.php

<?php
session_start();
require 'core/init.php';

if(!$username = Input::get('user')) {
    Redirect::to('index.php');
    exit;
}

if(!isset($_SESSION['user_data'])){
    $user = new User($username);

    if(!$user->exists()) {
        Redirect::to(404);
        exit;
    }

    $_SESSION['user_data'] = $user->data();
}
?>

<h3><?php echo escape($_SESSION['user_data']->username); ?></h3>
<p>Membership No: <?php echo escape($_SESSION['user_data']->id); ?></p>
<p>Full name: <?php echo escape($_SESSION['user_data']->name); ?></p>
<p>Date of birth: <?php echo escape($_SESSION['user_data']->dob); ?></p>
<p>Location: <?php echo escape($_SESSION['user_data']->location); ?></p>
<p>Join date: <?php echo escape($_SESSION['user_data']->joined); ?></p>

oerder.php

<?php
session_start();
require 'core/init.php';

if(!isset($_SESSION['user_data'])){
    Redirect::to('index.php');
    exit;
}

$Band_id = mysql_real_escape_string($_POST['band']);
$user_id = $_SESSION['user_data']->id;

$sql = "INSERT INTO orders (band_id,user_id) VALUES('$Band_id', '$user_id')";
mysql_query ($sql, $linkme)
or die ("could not add to database");
?>

你也应该转到 PDO 或 mysqli。

【讨论】:

  • session_start(); 必须使用才能使用$_SESSION。它在 order.php 中使用。我认为session_autostart 是错误的
  • @Loz Cherone 啊,我明白了,谢谢,我会对 PDO 做一些研究
  • 啊,我发现了一个问题,由于某种原因,订单只显示了一个用户,它不会在新用户登录时添加不同的 id。
猜你喜欢
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
相关资源
最近更新 更多