2013-03-11 51 views
0

我正在尝试显示本地用户登录的用户列表。因此,如果登录的会话用户具有“m3 4”的邮政编码并且其他5个用户的邮政编码以“m3 4”开头'然后这些用户将被显示给用户。通过设置mysql会话变量在mysql表中选择匹配的数据?

我的表布局是这样的:

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,我知道这可能看起来是一个愚蠢的问题,但请有人可以告诉我,因为我正在尝试各种各样的事情,并没有去哪里。

+0

你是在声明一个'global $ _SESSION'吗?你是否想要获得会话变量'$ _SESSION ['user_postcode']'?它是否设置在其他地方?...旁注:'mysql_ *'函数被弃用。有关更多详细信息,请参阅[PHP文档](http://www.php.net/manual/en/function.mysql-query.php)。 – brbcoding 2013-03-11 16:07:17

+0

我实际上并不需要全局的$ session,我只是把它放在那里来检查一些东西。我只是试图基本告诉查询,如果登录在/ $ _SESSION ['user_id'] - 被设置为变量的用户有他们的'user_postcode' - 这是我应该带的表中的一列用相同的邮政编码填写所有匹配的用户 – 2013-03-11 16:12:10

回答

0

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

var_dump($query); 

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

我们可以在您的代码中看到global $_SESSION;这一事实表明这是您第一次尝试使用会话。最有可能的,会议甚至没有工作-perhaps您忘记session_start() - 和$_SESSION['user_postcode']被触发此通知:

Notice: Undefined variable: _SESSION 

要见你需要配置PHP完全错误报告此类通知。这是brief explanation。我建议How to prevent SQL injection in PHP?