繁体   English   中英

检查MySQL连接(OOP PHP)

[英]check for MySQL connection (OOP PHP)

我有我的代码的各个部分,要求我检查是否已建立mysql连接。 下面我使用if(self::$connection) ,但是self::connection似乎总是返回“Resource id#6”而不是boolean - 我做错了什么?

class mysql_lib{
    static $connection;     

    static function connect($user = FALSE){     
        if(!$user){
            $user = 'mr_update';
        }
        $password = 'some_password';
        self::$connection = mysql_connect('localhost', $user, $password, TRUE);
        mysql_select_db('codlife_headfirst2');      
    }

    static function disconnect(){
        mysql_close(self::$connection);
    }

    static function mres($str){
        if(!self::$connection){
            self::connect('mres');
            $str = mysql_real_escape_string($str);
            mysql_close(self::$connection); 
        }
        else{
            $str = mysql_real_escape_string($str);
        }
        return $str;
    }
...

谢谢!


我的解决方案 :断开连接时再次使$ connection为false

static function disconnect(){
    mysql_close(self::$connection);
    self::$connection = FALSE;
}

只需使用mysql_ping()方法

检查与服务器的连接是否正常。 如果它已经下降,则尝试自动重新连接。 长时间保持空闲的脚本可以使用此功能,以检查服务器是否已关闭连接并在必要时重新连接。

如果与服务器MySQL服务器的连接正在工作,则返回TRUE,否则返回FALSE。

static function isActive() {
   return mysql_ping($connection);//returns boolean
}

mysql_connect将返回一个资源,所以这是正确的。 不要让那扔你。 看起来一切都应该正常工作。 还有别的东西不起作用吗?

更多信息:

mysql_connect()在成功时返回MySQL链接标识符,如果失败则返回FALSE。 因此,如果没有进行任何连接尝试,您的$ connection变量将为null(其计算结果为false)。 如果尝试连接尝试失败,则为false。 如果连接成功,$ connection将是一个'MySQL链接标识符',它将评估为true。 如果您尝试回显或打印“MySQL链接标识符”,它将打印类似“资源ID#6”的内容。 这就是应该做的。

我找到了解决方案,请参阅上面的更新问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM