2013-03-11 52 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?