我正在运行两个测试XAMPP服务器,两者都有类似的PDO Connection
类
首先:
<?php
/**
* Clase que envuelve una instancia de la clase PDO
* para el manejo de la base de controladores
*/
require_once 'login_mysql.php';
class ConexionBD
{
/**
* Única instancia de la clase
*/
private static $db = null;
/**
* Instancia de PDO
*/
private static $pdo;
final private function __construct()
{
try {
// Crear nueva conexión PDO
self::obtenerBD();
} catch (PDOException $e) {
// Manejo de excepciones
}
}
/**
* Retorna en la única instancia de la clase
* @return ConexionBD|null
*/
public static function obtenerInstancia()
{
if (self::$db === null) {
self::$db = new self();
}
return self::$db;
}
/**
* Crear una nueva conexión PDO basada
* en las constantes de conexión
* @return PDO Objeto PDO
*/
public function obtenerBD()
{
if (self::$pdo == null) {
self::$pdo = new PDO(
'mysql:dbname=' . BASE_DE_DATOS .
';host=' . NOMBRE_HOST . ";",
USUARIO,
CONTRASENA,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
// Habilitar excepciones
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$pdo;
}
/**
* Evita la clonación del objeto
*/
final protected function __clone()
{
}
function _destructor()
{
self::$pdo = null;
}
}
第二个(这个不起作用):
<?php
/**
* Clase que envuelve una instancia de la clase PDO
* para el manejo de la base de datos
*/
require_once 'mysql_login.php';
class Database
{
/**
* Única instancia de la clase
*/
private static $db = null;
/**
* Instancia de PDO
*/
private static $pdo;
final private function __construct()
{
try {
// Crear nueva conexión PDO
self::getDb();
} catch (PDOException $e) {
// Manejo de excepciones
}
}
/**
* Retorna en la única instancia de la clase
* @return Database|null
*/
public static function getInstance()
{
if (self::$db === null) {
self::$db = new self();
}
return self::$db;
}
/**
* Crear una nueva conexión PDO basada
* en los datos de conexión
* @return PDO Objeto PDO
*/
public function getDb()
{
if (self::$pdo == null) {
self::$pdo = new PDO(
'mysql:dbname=' . DATABASE .
';host=' . HOSTNAME .
';port:63343;',
USERNAME,
PASSWORD,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
// Habilitar excepciones
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$pdo;
}
/**
* Evita la clonación del objeto
*/
final protected function __clone()
{
}
function _destructor()
{
self::$pdo = null;
}
}
?>
由于某种原因,第二个连接未得到解决。任何想法为什么会这样?
这两个文件都在不同的目录中,并由不同的隔离文件引用。
编辑:错误返回
exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Connection refused' in /opt/lampp/htdocs/estudiantesServer/Database.php:60 Stack trace:
#0 /opt/lampp/htdocs/estudiantesServer/Database.php(60): PDO->__construct('mysql:host=loca...', 'root', 'root', Array)
#1 /opt/lampp/htdocs/estudiantesServer/Database.php(27): Database->getDb()
#2 /opt/lampp/htdocs/estudiantesServer/Database.php(42): Database->__construct()
#3 /opt/lampp/htdocs/estudiantesServer/estudiantes.php(26): Database::getInstance()
#4 /opt/lampp/htdocs/estudiantesServer/getEstudiantes.php(10): Estudiantes::getAll()
#5 {main}