在SQL中使用带有url变量的会话变量

时间:2014-12-22 11:17:30

标签: php sql variables session-variables urlvariables

我有一个PHP页面,显示数据库表(查询)中的数据表。我想使用Session变量来显示登录人员(会员)的所有数据。此会话变量使用用户主键(members_id)。因此,此时当用户打开网页时,他们会看到所有相关数据(查询)

数据表(查询)有一列给出“查询”的“状态”,该状态为“有效”或“已关闭”。我想使用此列来过滤数据,当用户点击页面顶部的2个链接中的1个链接时,可选择“活动”或“关闭”,它会显示相应的数据。 (“仅限主动查询”或“仅限查询”。

我以为我可以使用带有Session变量的URL变量来使用OR运算符来实现这一点,但我无法让它工作。

因此,对于Clarify,当用户首次打开页面时,会显示所有数据,但当他们选择“Active Link”或“Closed Link”时,他们只会看到他们选择的相关数据。

我没有在SQL和PHP中完成,因此我使用Dreamweaver插件编写了大量内容以及我自己的一些知识。

以下是我的代码片段,我希望有助于展示我想要做的事情!

<?php
$colname_rsEnquiriesList = "-1";
if (isset($_GET['status'])) {
$colname_rsEnquiriesList = $_GET['status'];
}
$allEnquiries_rsEnquiriesList = "-1";
if (isset($_SESSION['members_id'])) {
$allEnquiries_rsEnquiriesList = $_SESSION['members_id'];
}
mysql_select_db($database_LA, $LA);
$query_rsEnquiriesList = sprintf("SELECT * FROM enquiries WHERE status = %s OR     members_id = %s ORDER BY date_e DESC", GetSQLValueString($colname_rsEnquiriesList, "text"),GetSQLValueString($allEnquiries_rsEnquiriesList, "int"));
$rsEnquiriesList = mysql_query($query_rsEnquiriesList, $LA) or die(mysql_error());
$row_rsEnquiriesList = mysql_fetch_assoc($rsEnquiriesList);
$totalRows_rsEnquiriesList = mysql_num_rows($rsEnquiriesList);
?>

希望有人可以帮忙!感谢。

2 个答案:

答案 0 :(得分:1)

您需要的是以下查询:

SELECT *
FROM inquiries
WHERE member_id='".$memberId."'
AND status='".$status."'
ORDER by date_e DESC;

$ memberId是您从会话中检索到的ID,$ status保存用户需要的$ _GET参数。

编辑:

我使用你的代码

做了一个小例子
<?php

// Set status
if (isset($_GET['status']) && is_numeric($_GET['status'])) {
    switch ($_GET['status']) {
        case '1':
            $status = "active";
            break;
        case '2':
            $status = 'closed';
            break;
    }
} else {
    $status = "active";
}

// Set memerId
if (isset($_SESSION['members_id'])) {
    $memberId = isset($_SESSION['members_id']) ? $_SESSION['members_id'] : 0;
}

// Connect to database
mysql_select_db($database_LA, $LA);

// Prepare query
$query = sprintf("SELECT *
FROM enquiries
WHERE status=%s
AND members_id=%s
ORDER BY date_e DESC
", GetSQLValueString($status, "text"),
GetSQLValueString($memberId, "int"));

$resource = mysql_query($query, $LA) or die(mysql_error());
$results = array();
$totalRows = mysql_num_rows($resource);
if ($totalRows > 0) {
    while ($record = mysql_fetch_assoc($resource)) {
        $results[] = $record;
    }
}

// Now $results contains all records
// You can view them using a print_r or var_dump
?>

答案 1 :(得分:-1)

第一次使用者时你想做什么?

接下来就是如果你想通过主动非活动使用来过滤数据&#39; AND&#39;条件而不是&#39; OR&#39;。

$query_rsEnquiriesList = sprintf("SELECT * FROM enquiries WHERE status = %s AND members_id = %s ORDER BY date_e DESC", GetSQLValueString($colname_rsEnquiriesList, "text"),GetSQLValueString($allEnquiries_rsEnquiriesList, "int"));