#php #mysql #session
#php #mysql #сеанс
Вопрос:
Мне нужна некоторая помощь с «получением» идентификатора пользователя, который вошел на мой веб-сайт. По сути, у меня есть панель управления пользователями, в которой я хочу показывать только сведения об этих конкретных пользователях. Может кто-нибудь сказать мне, на правильном ли я пути и что я сделал не так.
Итак, на странице панели мониторинга, куда попадают пользователи после входа в систему, у меня есть это вверху страницы:
$query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = $_SESSION['id']";
Затем в моем заголовке, который есть на каждой странице, у меня есть это:
<?php
session_start();
require "includes/dbh.inc.php";
?>
Затем в моем сценарии входа в систему у меня есть:
$_SESSION['id'] = $row['idUsers']; //User ID
$_SESSION['uid'] = $row['uidUsers']; //Username
$_SESSION['email'] = $row['emailUsers']; //Users Email
Итак, я подумал, что, вызвав $_SESSION['id']
вверху страницы моей информационной панели, он просто определит, кто вошел в систему, однако ошибка, которую я получаю, это:
синтаксическая ошибка, неожиданный » (T_ENCAPSED_AND_WHITESPACE), ожидающий ‘-‘ или идентификатор (T_STRING), или переменную (T_VARIABLE), или число (T_NUM_STRING)
Пожалуйста, кто-нибудь может сказать мне, является ли это неправильным способом узнать, какой пользователь вошел в систему, или это просто синтаксический пример?
Комментарии:
1. Что неясного в
syntax error
сообщении?2. Привет @MarcinOrlowski извините, что именно вы имеете в виду?
3. Именно то, что я сказал. Вы получили простое, не требующее пояснений сообщение об ошибке — что в нем неясного, что вам нужно спросить?
4. Я все еще не уверен в том, как исправить фактическую ошибку
$query = "SELECT * FROM checkPointMod WHERE idUsers = '$_SESSION['id']' ";
Везде, где я смотрел здесь, это выглядит правильно…
Ответ №1:
Вы можете создать переменную для хранения идентификатора и передать ее в запросе, чтобы игнорировать эту ошибку следующим образом
$id = $_SESSION['id'];
$query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = $id";
Или вы можете сделать это
$query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = ".$_SESSION['id'].'"';
Комментарии:
1. Огромное вам спасибо!!!! Похоже, что это был простой случай, когда просто неправильно использовались ‘и». Спасибо, Юсеф! 🙂
Ответ №2:
Я думаю, проблема в вашем sql-запросе.
Когда вы используете ассоциативный массив, содержащий ключ в виде строки, вы должны объединить его с оператором ‘.’ . Его нельзя использовать в двойных кавычках напрямую, как простые переменные.
Вы должны использовать запрос типа
$uid = $_SESSION['id'];
$query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = $uid";
Или
$query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = ".$_SESSION['id'];
Комментарии:
1. Привет @SachinPatil да, это был тот факт, что у меня их не было. ни » ‘ спасибо, ваш ответ тоже правильный.