2013-03-11 4 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' 

, но я пытаюсь сделать его пользовательской сессии конкретные, так что если вошедшего user/$ _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'] не установлен, и я havn't установить". $ _ SESSION [ 'user_postcode'] в качестве переменной или что-нибудь, потому что я не» я знаю, как это сделать, но «. $ _ SESSION ['user_id'] настроен как переменная, как это сделал мой друг, который никогда не показывал мне, как это сделать. Поэтому я не знаю, как я могу решить эту проблему, и я смогу каким-то образом пользователь ". $ _ SESSION ['user_id'].

Могу ли я не просто добавить любое имя столбца в $ _SESSION ['columnHere']?

Я работаю над этим уже более суток, и я не могу понять, я действительно новичок в php и mysql, и я знаю, что это может показаться глупым вопросом, но, пожалуйста, кто-нибудь может показать мне, потому что я «Пробовать все виды и не получать.

+0

Что вы объявляете 'global $ _SESSION' для? Вы пытаетесь получить переменную сеанса '$ _SESSION ['user_postcode']'? Установлено ли это где-то еще? ... sidenote: 'mysql_ *' функции устаревают. Подробнее см. В [PHP Docs] (http://www.php.net/manual/en/function.mysql-query.php). – brbcoding

+0

Мне действительно не нужна глобальная сессия $, я просто положил ее туда, чтобы что-то проверить.Я просто пытаюсь в основном сказать, что если пользователь, который зарегистрирован в/$ _SESSION ['user_id'], который задан как переменная, имеет свой «user_postcode» - это столбец в моей таблице, который он должен принести всех соответствующих пользователей с тем же почтовым индексом –

ответ

0

PHP и SQL - это разные языки. Вы используете PHP для генерации кода SQL, но это все. Итак, в конце концов, все, что имеет значение, это то, что содержит $query. Просто проверьте его значение ...

var_dump($query); 

... и используйте ваш любимый клиент MySQL для запуска сгенерированного кода SQL. Это скажет вам, где ошибка.

Тот факт, что мы можем видеть global $_SESSION; в вашем коде, предполагает, что это ваша первая попытка сеансов. Скорее всего, сеансы даже не работает -Возможно Вы забыли session_start() - и $_SESSION['user_postcode'] является запуск этого уведомления:

Notice: Undefined variable: _SESSION 

Чтобы увидеть такие уведомления, которые необходимо настроить полный отчет об ошибках в PHP. Вот brief explanation.

Кроме того, я рекомендую How to prevent SQL injection in PHP?.

Смежные вопросы