Php 由于未知原因,无法建立到服务器的链接
我有点困惑,我真的需要对代码有一些新的看法:)Php 由于未知原因,无法建立到服务器的链接,php,mysql,class,object,database-connection,Php,Mysql,Class,Object,Database Connection,我有点困惑,我真的需要对代码有一些新的看法:) 这是我的翻译功能: function __($string) { isset($_SESSION['lang']) ? $lang = $_SESSION['lang'] : $lang = DEFAULT_LANG; $oDb = new Model_Database('translations'); $aLang = $oDb->getById($string); return $aLang[$lang];
这是我的翻译功能:
function __($string) {
isset($_SESSION['lang']) ? $lang = $_SESSION['lang'] : $lang = DEFAULT_LANG;
$oDb = new Model_Database('translations');
$aLang = $oDb->getById($string);
return $aLang[$lang];
}
这是它使用的Model_数据库:
class Model_Database {
static private $connection = '';
private $aConfig;
private $sTable;
public function __construct($sTable = '') {
$this->aConfig = Core_Config::GetConfigArray('database');
if(empty(self::$connection)) {
self::$connection = mysql_connect($this->aConfig['host'], $this->aConfig['user'], $this->aConfig['pass']);
}
mysql_select_db($this->aConfig['db'], self::$connection);
$this->sTable = TABLE_PREFIX . $sTable;
}
public function getById($id) {
$query = 'SELECT * FROM `' . $this->sTable . '` WHERE `id` = "' . $id . '"';
$result = mysql_fetch_array(mysql_query($query));
return $result;
}
public function getByAny($column, $value) {
$query = 'SELECT * FROM `' . $this->sTable . '` WHERE `' . $column . '` = "' . $value .'"';
$result = mysql_fetch_array(mysql_query($query));
return $result;
}
public function __destruct() {
if( gettype(self::$connection) == "resource") {
mysql_close(self::$connection);
}
self::$connection = '';
}
}
这是同样使用数据库的Model_Login:
class Model_Login {
private $oDatabase;
public function __construct() {
$this->oDatabase = new Model_Database('users');
}
public function login($login, $password) {
$aUser = $this->oDatabase->getByAny('login', $login);
if(md5($password) == $aUser['password']) {
$_SESSION['login'] = $login;
$_SESSION['password'] = md5($password);
return true;
}
else
return false;
}
}
问题是,当我尝试在负责登录的文件中使用翻译功能时,我遇到错误用户“ODBC”@“localhost”
的访问被拒绝,并且无法建立到服务器的链接
起初,我在关闭和打开新连接以及登录方面遇到了问题,但翻译并没有起作用。所以我找到了解决办法,把连接记为静态变量。翻译已开始工作,但登录已停止。
有什么建议吗?
编辑:当我单击“登录”创建新的Model\u登录并调用方法login()
编辑2:如果您需要更多代码来重现错误,我甚至可以共享整个项目,正如您所看到的,它处于早期构建阶段,只是制作基本功能。当然,如果需要的话,我可以再发布一些代码,只需指定您需要帮助我什么:)我以这种方式在等待时制定了解决方案:
1.我将此方法添加到数据库类中
public function checkConnection() {
if( gettype(self::$connection) != "resource") {
self::$connection = mysql_connect($this->aConfig['host'], $this->aConfig['user'], $this->aConfig['pass']);
mysql_select_db($this->aConfig['db'], self::$connection);
}
}
二,。我将此方法添加到第一行中的所有其他方法中。
这个解决方案很有效,但不是很“漂亮”,你知道有更好的方法吗?
编辑:我找到了更简单的解决方案。
我创建了closeConnection()方法,并将其添加到我的index.php末尾,而不是checkConnection()(整个站点就像一个应用程序,所有内容都通过index.php)。还从数据库类中删除了析构函数。以下是代码,希望有人能了解我的错误:):
public static function closeConnection() {
if( gettype(self::$connection) == "resource") {
mysql_close(self::$connection);
self::$connection = '';
}
}