我的代码的各个部分需要我检查是否已经建立了mysql连接。我正在使用if(self::$connection)
,但self::connection
似乎总是返回“资源ID#6”而不是布尔值 - 我做错了什么?
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;
}
答案 0 :(得分:3)
只需使用mysql_ping()方法
即可检查与服务器的连接是否正常。如果它已经下降,则尝试自动重新连接。长时间保持空闲的脚本可以使用此功能,以检查服务器是否已关闭连接并在必要时重新连接。
如果与服务器MySQL服务器的连接正在工作,则返回TRUE,否则返回FALSE。
static function isActive() {
return mysql_ping($connection);//returns boolean
}
答案 1 :(得分:0)
mysql_connect将返回一个资源,所以这是正确的。不要让那扔你。看起来一切都应该正常工作。还有别的东西不起作用吗?
更多信息:
mysql_connect()
成功时返回MySQL链接标识符,失败时返回FALSE。因此,如果没有进行任何连接尝试,您的$ connection变量将为null(其计算结果为false)。如果尝试连接尝试失败,则为false。如果连接成功,$ connection将是一个'MySQL链接标识符',它将评估为true。如果您尝试回显或打印“MySQL链接标识符”,它将打印类似“资源ID#6”的内容。这就是它应该做的。
答案 2 :(得分:0)
我找到了解决方案,请参阅上面的更新问题。