0

我正在尝试向登录的用户显示居住在本地的用户列表。因此,如果登录的会话用户的邮政编码为“m3 4”,而其他 5 个用户的邮政编码以“m3 4”开头,那么这些用户将显示给用户。

我的桌子是这样布置的:

id  |   user_id  | user_postcode
1          2          M3 4
2          3          SM2 7
3          4          M3 4

因此在这种情况下,用户 2 将显示给已登录的用户 4,因为他们的邮政编码匹配。

我正在尝试在 mysql 中执行此操作,并且当我手动输入邮政编码时它可以工作,如下所示:

AND ptb_stats.user_postcode='M3 4'

但我试图使其特定于用户会话,因此如果登录用户 / $_SESSION[user_id'] 与其他用户具有相同的邮政编码。

我正在尝试这样做,但它显示所有没有邮政编码的用户。

function get_local_users() {
            global $connection;
            global $_SESSION;
            $query = "
            SELECT *
            From ptb_stats, ptb_users
            WHERE ptb_stats.user_id=ptb_users.id
            AND ptb_stats.user_postcode='".$_SESSION['user_postcode']."'";
            $local_set = mysql_query($query, $connection);
            confirm_query($local_set);
            return $local_set;
        }

我认为它这样做是因为 ".$_SESSION['user_postcode'] 没有设置,我没有设置 ".$_SESSION['user_postcode'] 作为变量或任何东西,因为我不知道该怎么做,但是“.$_SESSION['user_id'] 被设置为一个变量,因为这是由我的一个朋友完成的,他从未向我展示过如何做到这一点。所以我不知道如何解决这个问题,我是否可以不知何故用户“.$_SESSION['user_id'].

我不能简单地将任何列名添加到 $_SESSION['columnHere'] 吗?

我已经为此工作了一天多,但我无法弄清楚,我对 php 和 mysql 真的很陌生,我知道这似乎是一个愚蠢的问题,但请有人告诉我,因为我正在尝试所有排序,无处可去。

4

1 回答 1

0

PHP 和 SQL 是不同的语言。您正在使用 PHP 生成 SQL 代码,但仅此而已。所以,最后,重要的是$query包含什么。只需检查它的价值...

var_dump($query);

...并使用您最喜欢的 MySQL 客户端运行生成的 SQL 代码。这会告诉你错误在哪里。

我们可以global $_SESSION;在您的代码中看到的事实表明这是您第一次尝试使用会话。最有可能的是,会话甚至没有工作——也许你忘记了session_start()——并且$_SESSION['user_postcode']正在触发这个通知:

Notice: Undefined variable: _SESSION

要查看此类通知,您需要在 PHP 中配置完整的错误报告。这是一个简短的解释

另外,我推荐如何防止 PHP 中的 SQL 注入?.

于 2013-03-11T16:44:58.263 回答