私はSQL ServerバックエンドとやりとりするPHP Webサイトで作業しています。私は(SQLデータベースとの通信を必要とする)に再度ログインしようとすると、それは私がこれを取得、その後多分単一の時間のために働くと:無効なハンドラが返されました - PHP PDO SQL Server
Fatal error: Invalid handle returned. in ..../sqlWorker.php on line 18
接続文字列の間違いは、最も明白な犯人に思えるかもしれません。しかし、私が言ったように、それは一度接続してから壊れるように見える。問題は何か?ありがとう。任意の助け
sqlWorker.php
<?php
class sqlWorker {
var $user;
var $pass;
var $host;
var $db;
var $conn;
function __construct($hostname, $dbName, $username, $password) {
$this->db = $dbName;
$this->host = $hostname;
$this->user = $username;
$this->pass = $password;
}
public function connect() {
try {
// this is the "Fatal error" line $conn = new PDO("sqlsrv:Server=$this->host;Database=$this->db", $this->user, $this->pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Database connection failure: " . $e->getMessage();
}
return $conn;
}
"ログイン" の論理
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
function formatInput($data) {
$data = trim($data);
$data = strip_tags($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
function alphabetizeResources($a, $b) {
if ($a->name == $b->name) {
return 0;
}
return ($a->name < $b->name) ? -1 : 1;
}
// define constants
define("HOST", "INSTANCE\INSTANCE");
define("DB", "DB");
define("USER", "USER");
define("PASS", "PASS");
define("ROOT", "/new/");
define("IMAGEPATH", ROOT . "includes/img");
define("STYLEPATH", ROOT . "includes/styles/");
define("SCRIPTPATH", ROOT . "includes/scripts/");
// necessary classes
include_once("sqlWorker.php");
include_once("imageManipulator.php");
include_once("entities.php");
include_once("cms.php");
// start session if it does not already exist
if (!isset($_SESSION)) {
session_start();
}
$isTeam = strpos(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH), "/teammember");
$isHotel = strpos(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH), "/hotel");
$isAdmin = ((isset($_SESSION['userLevel']) && $_SESSION['userLevel'] == 1) ? true : false);
// create instance of "helper" classes for database access and displaying HTML
$dbm = new sqlWorker(HOST, DB, USER, PASS);
$cmsInstance = new cms();
// user is attempting to login
if (isset($_POST['login'])) {
$error;
$username = formatInput($_POST["user"]);
$pass = formatInput($_POST["pass"]);
if ($dbm->getUser($username, $pass) != false) {
$_SESSION["userLevel"] = $dbm->getUser($username, $pass);
if ($dbm->getUser($username, $pass) != 1) {
header("Location: " . ROOT . "teammember/index.php");
} else {
header("Location: " . ROOT . "teammember/index.php");
}
} else {
$error = true;
}
}
本当にありがとうございました。