将mysql存储在SESSION数组中供以后使用(通过in_array检查)

时间:2011-11-19 04:57:37

标签: php mysql

我目前有这个: require_once( 'auth.php');

auth.php:

    session_start();

    if(!isset($_SESSION['SESS_MERCHANT_ID']) || (trim($_SESSION['SESS_MERCHANT_ID']) == '')) {
        header("location: login-form.php");
        exit();
    }

mybadges.php:
        $mybadges = mysql_query("SELECT badge_id
        FROM badges WHERE merchant_id = $current_userid ORDER BY badge_id DESC"); 

    while ($result = mysql_fetch_array($mybadges)){

    $badge_id = $result['badge_id'];

    }

我想知道如何将$result['badge_id'];存储在$ _SESSION数组中(例如$_SESSION['badges']?)

4 个答案:

答案 0 :(得分:1)

'auth.php'的更合理的版本

session_start();
if(empty($_SESSION['SESS_MERCHANT_ID'])) {
    header("location: login-form.php");
    exit();
}

更明智的mybadges.php版本:

$sql = "SELECT badge_id FROM badges WHERE merchant_id = $current_userid ORDER BY badge_id DESC"
$res = mysql_query($sql) or trigger_error(mysql_error()." ".$sql); 

如果只存储一个bagde_id:

$row = mysql_fetch_array($res);
$_SESSION['badge'] = $row['badge_id'];

如果有很多ID(因为你的代码无法确定,你需要什么):

$badges = array();
while ($row = mysql_fetch_array($res)) {
    $badge_ids[] = $row['badge_id'];
}
$_SESSION['badges'] = $badge_ids;

一般来说,要存储任何会话,只需将任何内容分配给会话变量:

$_SESSION['badges'] = $badge_ids;

没什么大不了的。

一个SESSION数组变得非常简单。 $_SESSION['badges']是要使用的常规变量。

请注意,您只能保存标量,数组和对象。不是资源。

答案 1 :(得分:0)

如果我很了解您的需求,您可以这样做:

$_SESSION['badges'] = $result['badge_id'];

答案 2 :(得分:0)

php会话支持多个dimesion数组。

$members=array();
foreach(mysql_fetch_array($memberresultset) as $key->$value)
$members[]=$value;

foreach($members as $mv)
$_SESSION["MEMBER"][]=$mv;
例如,

会起作用。

也是这样的:

$_SESSION["badgeidnumbers"][]=$result["badgeid"]

但是你需要使用foreach命令添加它们,获取多行。

额外括号用于使用新索引号添加到数组。你可以在第二个括号中写任何东西。

你也使用像

这样的格式
$_SESSION["badgeidnumbers"][$result["badgeid"]]=$result["badgename"]

我不建议将项目分成太多文件。通常,您不需要会话变量。不要犹豫,询问有关您的应用程序的一般结构的想法。它可以为你节省很多时间。

答案 3 :(得分:0)

确保mybadges.php包含auth.php,否则您将无法启动会话。我假设你拥有的是它,但它在上面的代码中没有显示出来。假设你已经包含了auth.php,那就像用sputnick说的一样

$_SESSION['badges'] = $result['badge_id'];