Я начинаю учиться PDO
и при этом решил переписать мой старый код mysql_*
. Таким образом, у меня есть форма входа в систему, которая в соответствии с перенаправлением userlevel перенаправляется в разные местоположения. Это делается (I think since I can login correctly
). Затем, когда перенаправляет меня, у меня есть запрос, который в зависимости от userlevel показывает некоторый результат из базы данных. Проблема в том, что она ничего не возвращает и ошибок в файле журнала нет. Это мой логин. Правильно ли я делаю это?PDO-запрос с сессией ничего не возвращает
session_start();
if(isSet($_POST['submit'])) {
include 'misc/database.inc.php';
$pdo = Database::connect();
$username=$_POST['username'];
$password=sha1($_POST['password']);
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
$res = $stmt -> fetch();
if ($res['userlevel'] == 1)
{
// Save type and other information in Session for future use.
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$_SESSION['userlevel'] = $userlevel;
header("location: admins/main.php");
}
elseif ($res['userlevel'] >= 4)
{
$_SESSION['user_id'] = $id;
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$_SESSION['userlevel'] = $userlevel;
$_SESSION['firstname'] = $firstname;
$_SESSION['lastname'] = $lastname;
$_SESSION['user_image'] = $user_image;
$_SESSION['email'] = $email;
header('Location: users/main.php');
}
else
{
header("location: index.php");
}
// Closing MySQL database connection
$pdo = null;
} else {
И это вопрос, который я хочу, чтобы выполнить в main.php
при входе согласно userlevel
<?php
include '../misc/database.inc.php';
$pdo = Database::connect();
$q = "SELECT * FROM ras AS r
LEFT JOIN user_ras AS r2u ON r.userlevel = r2u.ras_userlevel
LEFT JOIN users AS u ON r2u.user_userlevel = u.userlevel where menu = '".$_SESSION['userlevel']."'";
foreach($pdo->query($q) as $res)
{
echo '<a href="users/ras.php?rest_id='. $res['ras_id'] .'">'.$res['name'].'</a>';
}
Database::disconnect();
?>
Как я сказал, что я совершенно новым для PDO так, пожалуйста, медведь со мной, и если вы можете Помоги мне. Спасибо.
Update - database.inc.php
<?php
class Database
{
private static $dbName = 'dbname' ;
private static $dbHost = 'localhost' ;
private static $dbUsername = 'user';
private static $dbUserPassword = 'pass';
private static $cont = null;
public function __construct() {
die('Init function is not allowed');
}
public static function connect()
{
// One connection through whole application
if (null == self::$cont)
{
try
{
self::$cont = new PDO("mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
}
catch(PDOException $e)
{
die($e->getMessage());
}
}
return self::$cont;
}
public static function disconnect()
{
self::$cont = null;
}
}
?>
'session_start();' должен быть внутри всех файлов с помощью сессий. –
Да, у меня есть внутри main.php. Фактически, когда я регистрирую пользователя, я вижу его имя пользователя ' Php echo $ _SESSION ['username']; ?> ', поэтому сеанс работает. Но запроса нет. –
'r2u.user_userlevel' вы уверены, что не имели в виду' r2u.userlevel'? Трудно сказать, что присоединение - это не то, на что я способен. add '$ pdo-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' сразу после открытия соединения. –