我開始學習PDO
,同時這樣做決定重寫我的舊mysql_*
代碼。所以我有一個登錄表單,根據用戶級別重定向到不同的位置。這已完成(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
執行時,根據用戶級
<?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所以請容忍我的查詢,如果你能幫我。謝謝。
更新 - 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();'必須使用會話的所有文件裏面。 – 2014-12-05 19:11:01
是的,我已經把它放在main.php裏面了。實際上,當我登錄某些用戶時,我可以看到他的用戶名'<?php echo $ _SESSION ['username']; ?>所以會議是工作。但查詢不。 – 2014-12-05 19:13:12
'r2u.user_userlevel'你確定你不是指'r2u.userlevel'?很難說,連接不是我擅長的。在連接打開後立即添加'$ pdo-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);'。 – 2014-12-05 19:16:47