0

Hello,

Iam getting an fatal error " PHP Fatal error: Cannot redeclare class MysqlConnect " It was my connection file and the website was

working from the past two years. Yesterday on of my friend said my website was down so that time i noticed this issue I got the above meesage from my error_log file below I am including my view page and connection page some body please help.

View page

<?php require_once "includes/MysqlConnect.php";
$con = MysqlConnect::getInstance();
$directormessage=$con->select("SELECT * FROM bsi_director_message");
$hotlink=$con->select("SELECT * FROM bsi_hot_links");

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>website title</title>
<meta name="description" content="website description" />
<meta  name="keywords" content="keyword" />
<link rel="shortcut icon" href="images/favicon.ico">
</head>
<body>
<p><strong><?php echo $directormessage['title'];?></strong></p>
</body>

Connection Page

<?php

class MysqlConnect {

    private static $_instance = false;
    private $_con;

    public function __construct() {
        //
    }

    public function __sleep() {
        //
    }

    public function __wakeup() {
        //
    }

    public static function getInstance() {
        if (self::$_instance === false) {

            $instance = new self();
            $instance->_con = mysqli_connect('localhost', 'root', 'password')
                    or trigger_error('Could not connect to database server', E_USER_ERROR);

            mysqli_select_db($instance->_con, 'database_name')
                    or trigger_error('Could not select database', E_USER_ERROR);

            self::$_instance = $instance;
        }

        return self::$_instance;
    }

    public static function dbEscape($value) {
        return self::getInstance()->_escapeString($value);
    }

    public function select($sql, $fetchAll = false) {
//echo $sql;
        $str = mysqli_query($this->_con, $sql);

        if ($fetchAll === false) {
            $row = mysqli_fetch_assoc($str);
            return $row;
        }

        $result = array();
        while (($row = mysqli_fetch_assoc($str))) {
            $result[] = $row;
        }

        return $result;
    }

    public function update($table, $data, $where) {

        $dataUpdate = array();
        foreach ($data as $field => $value) {
            $dataUpdate[] = "`" . $field . "` = " . $this->_escapeString($value);
        }

        if (is_array($where)) {
            $where = '(' . implode(') AND (', $where) . ')';
        }

        $sql = "UPDATE `" . $table . "` SET "
                . implode(',', $dataUpdate) . " WHERE " . $where;

        $result = mysqli_query($this->_con, $sql);
        return $result;
    }

    public function delete($table, $where) {

        $dataDelete = array();

        if (is_array($where)) {
            $where = '(' . implode(') AND (', $where) . ')';
        }

        $sql = "DELETE FROM `" . $table . "` WHERE " . $where;

        $result = mysqli_query($this->_con, $sql);
        return $result;
    }

    public function insert($table, $data) {

        $formattedVals = array();
        foreach (array_values($data) as $value) {
            $formattedVals[] = $this->_escapeString($value);
        }

        $sql = "INSERT INTO `" . $table . "`"
                . " (" . '`' . implode('`,`', array_keys($data)) . '`' . ")"
                . " VALUES (" . implode(",", $formattedVals) . ")";

        $result = mysqli_query($this->_con, $sql);
        return $result;
    }

    //--------------------------------------------------------------------------
    // private methods
    //--------------------------------------------------------------------------

    private function _escapeString($value) {

        if ($value === null) {
            return 'NULL';
        }

        if (is_int($value)) {
            return $value;
        }

        return "'" . mysqli_real_escape_string($this->_con, $value) . "'";
    }

}

///************Fetch Pagination*************///

$db_username = 'root';
$db_password = 'password';
$db_name = 'database_name';
$db_host = 'localhost';
$item_per_page = 8;
$item_per_pageone = 2;
$connecDB = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');
///***********End Pagination**********///

///************ NORMAL PAGINATION CONNECTION *************///
$db_username = 'root';
$db_password = 'password';
$db_name = 'database_name';
$db_host = 'localhost';
$item_per_page = 1;
$connecDBS = mysql_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');
///***********End Pagination**********///

So any one have any idea what was wrong ? as this website was working from the past two year's and now only it was showing this erro and the page was blank

2
Contributors
3
Replies
27
Views
2 Months
Discussion Span
Last Post by rproffitt
1

The common fix or reply about this with a google search seems to be "wrap your class in code to check for the function/class."

So the entire Class MysqlConnect is wrapped like this:

if (class_exists('MysqlConnect') != true) {

    class MysqlConnect { ... }

}

`

Votes + Comments
its worked
0

Thank you rproffitt , it worked as I was searching for an resolution for this issue but

the forum's and website's are saying to add required or once_required but none of them

worked for me. As it worked I added the line like below so the website started working.

Thanks..

<?php

if (class_exists('MysqlConnect') != true) { 

class MysqlConnect {
    private static $_instance = false;
    private $_con;
    public function __construct() {
        //
    }
    public function __sleep() {
        //
    }
    public function __wakeup() {
        //
    }
    public static function getInstance() {
        if (self::$_instance === false) {
            $instance = new self();
            $instance->_con = mysqli_connect('localhost', 'root', 'password')
                    or trigger_error('Could not connect to database server', E_USER_ERROR);
            mysqli_select_db($instance->_con, 'database_name')
                    or trigger_error('Could not select database', E_USER_ERROR);
            self::$_instance = $instance;
        }
        return self::$_instance;
    }
    public static function dbEscape($value) {
        return self::getInstance()->_escapeString($value);
    }
    public function select($sql, $fetchAll = false) {
//echo $sql;
        $str = mysqli_query($this->_con, $sql);
        if ($fetchAll === false) {
            $row = mysqli_fetch_assoc($str);
            return $row;
        }
        $result = array();
        while (($row = mysqli_fetch_assoc($str))) {
            $result[] = $row;
        }
        return $result;
    }
    public function update($table, $data, $where) {
        $dataUpdate = array();
        foreach ($data as $field => $value) {
            $dataUpdate[] = "`" . $field . "` = " . $this->_escapeString($value);
        }
        if (is_array($where)) {
            $where = '(' . implode(') AND (', $where) . ')';
        }
        $sql = "UPDATE `" . $table . "` SET "
                . implode(',', $dataUpdate) . " WHERE " . $where;
        $result = mysqli_query($this->_con, $sql);
        return $result;
    }
    public function delete($table, $where) {
        $dataDelete = array();
        if (is_array($where)) {
            $where = '(' . implode(') AND (', $where) . ')';
        }
        $sql = "DELETE FROM `" . $table . "` WHERE " . $where;
        $result = mysqli_query($this->_con, $sql);
        return $result;
    }
    public function insert($table, $data) {
        $formattedVals = array();
        foreach (array_values($data) as $value) {
            $formattedVals[] = $this->_escapeString($value);
        }
        $sql = "INSERT INTO `" . $table . "`"
                . " (" . '`' . implode('`,`', array_keys($data)) . '`' . ")"
                . " VALUES (" . implode(",", $formattedVals) . ")";
        $result = mysqli_query($this->_con, $sql);
        return $result;
    }
    //--------------------------------------------------------------------------
    // private methods
    //--------------------------------------------------------------------------
    private function _escapeString($value) {
        if ($value === null) {
            return 'NULL';
        }
        if (is_int($value)) {
            return $value;
        }
        return "'" . mysqli_real_escape_string($this->_con, $value) . "'";
    }
}
///************Fetch Pagination*************///
$db_username = 'root';
$db_password = 'password';
$db_name = 'database_name';
$db_host = 'localhost';
$item_per_page = 8;
$item_per_pageone = 2;
$connecDB = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');
///***********End Pagination**********///
///************ NORMAL PAGINATION CONNECTION *************///
$db_username = 'root';
$db_password = 'password';
$db_name = 'database_name';
$db_host = 'localhost';
$item_per_page = 1;
$connecDBS = mysql_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');
///***********End Pagination**********///

}
0

Thanks for the report back. Now there are some that will call this not a great fix but hey, sometimes you can't go over all the code and have to go with a wrap solution as I noted.

Your supplied code didn't find Waldo for me. Or rather I didn't see where you could have included this class more than one.

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.