有沒有給出任何錯誤,但由於某些原因的代碼似乎沒有工作..與PDO PHP登錄,似乎沒有工作
下面是代碼:
<?php
session_start();
require_once('inc/db.php');
if(isset($_SESSION['username'])) {
header("location: index.php");
} else {
try {
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$SQL = $dbh->prepare('SELECT * FROM users WHERE username =:username AND password =:password');
$SQL->bindParam(':username', $username);
$SQL->bindParam(':password', $password);
$SQL->execute();
$total = $SQL->rowCount();
$row = $SQL->fetch();
if($total > 0) {
if($row['verified'] > 0) {
$_SESSION['username'] = $username;
} else {
echo "Unverified";
}
} else {
echo "Incorrect";
}
} catch(PDOException $e) {
}
}
?>
任何人都可以幫我看看有什麼不對?謝謝很多提前:)
編輯::::
這是我db.php中
<?php
try {
$DB_NAME = 'users';
$DB_USER = 'root';
$DB_PASS = '';
$dbh = new PDO('mysql:host=localhost;dbname='.$DB_NAME, $DB_USER, $DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Error?";
}
?>
擺脫'嘗試.. catch'東西,然後你可能會看到一些錯誤。你也不需要'mysql_real_escape_string()'當使用參數綁定 – Phil
我會把調試放到catch子句中而不是刪除try-catch塊('echo $ e-> getMessage();') –
@ChrisForrence否, 不,不!如果出現錯誤,則應該發生異常。爲什麼用'echo'替換掉有價值的信息?如果你不打算用異常處理異常繼續正常的程序操作,你應該讓異常繼續。 – Phil