mysqlx: Mysql & Mysqli
Webentwicklung, Widget, Wordpress

Nachdem es ab und an vorkommt, dass ein Script, das gerade für PHP5 inkl. mysqli fertiggestellt worden ist, auf einem PHP4 Server eingesetzt werden soll, entschloss ich mich dazu, eine kleine Database-Engine zu schreiben, bei der sich einfach zwischen der Schnittstelle mysqli bzw. ext/mysql umschalten lässt, sodass nicht das gesamte Script umgeschrieben werden muss, sondern lediglich ein Parameter geändert werden muss um zu "switchen".

Da die Anwendung, für die ich diese Klasse schreibe nur auf die Grundfunktionen für Mysql zugreift, sind natürlich nicht alle Möglichkeiten enthalten, die von PHP innerhalb der mysql(i)-Schnittstelle zur Verfügung gestellt werden.

Jedoch ist die Klasse derart einfach gestrickt, dass es kein Problem darstellen sollte, eine Funktion hinzuzufügen.

Es sollte ebensowenig ein Problem darstellen, die mysqlx Klasse für eine andere Datenbank wie z.B. sqlite o.ä. zu modifizieren. 

Im Folgenden ist die Klasse sowie ein Demo-Script zu finden.

Viel Spaß damit.

Feedback und Verbesserungsvorschläge können gerne gemailt werden. 


(Starke MarkenSpiel & Spaß; Special ShopsSpiel & Spaß; NeuheitenSpiel & Spaß; Spiel & Spaß; t-shirts|tops|sport|funktion, trend; )

<?
//*********MySQL**********//
$db_engine='mysql';//mysqli OR ext/mysql
$server="localhost";
$usr="dbuser";
$pass="dbpw";
$database="dbname";
//***********************//
$arr_mysql=array('host'=>$server,'user'=>$usr,'password'=>$pass,'database'=>$database);
//GLOBAL $mysql;
?>
<?
$mysql=new mysql();
$mysql->engine=$db_engine;
if(!$mysql->connect($arr_mysql))
    print_r('<p>Error when connecting to mysql DB</p>'.$mysql->error());
$query='SELECT * FROM config;';
$result=$mysql->query($query);
echo $mysql->num_rows($result);
echo "<pre>";
while($row=$mysql->fetch_assoc($result))
    print_r($row);
echo "</pre>";
?>
<?
//mysqlx class from shop24-7.info
//feedback and questions to: mysqlx{[aet]}cashers.de
class mysqlx
{
    var $engine;
    var $mysqli;
    var $mysql;
    //err fkt
    public function connect($arr)
    {
        $return=1;
        if($this->engine=='mysqli')
        {
            $this->mysqli=new mysqli($arr['host'],$arr['user'],$arr['password']) OR $return=0;
            $this->mysqli->select_db($arr['database']) OR $return=0;
            $this->mysqli->query("SET NAMES UTF8") OR $return=0;
        }
        if($this->engine=='mysql')
        {
            $this->mysql=mysql_connect($arr['host'],$arr['user'],$arr['password']) OR $return=0;
            mysql_select_db($arr['database'], $this->mysql) OR $return=0;
            mysql_query("SET NAMES UTF8",$this->mysql) OR $return=0;
        }
        return $return;
    }
    public function query($query)
    {
        $return=1;
        if($this->engine=='mysqli')
        {
            $return=$this->mysqli->query($query) OR $return=0;
        }
        if($this->engine=='mysql')
        {
            $return=mysql_query($query,$this->mysql) OR $return=0;
        }
        return $return;
    }
    public function insert_id()
    {
        $return=1;
        if($this->engine=='mysqli')
        {
            $return=$this->mysqli->insert_id OR $return=0;
        }
        if($this->engine=='mysql')
        {
            $return=mysql_insert_id($this->mysql) OR $return=0;
        }
        return $return;
    }
    public function fetch_assoc($result)
    {
        $return=1;
        if($this->engine=='mysqli')
        {
            $return=mysqli_fetch_assoc($result) OR $return=0;
        }
        if($this->engine=='mysql')
        {
            $return=mysql_fetch_assoc($result) OR $return=0;
        }
        return $return;
    }
    public function num_rows($result)
    {
        $return=1;
        if($this->engine=='mysqli')
        {
            $return=mysqli_num_rows($result) OR $return=0;
        }
        if($this->engine=='mysql')
        {
            $return=mysql_num_rows($result) OR $return=0;
        }
        return $return;
    }
    public function error()
    {
        if($this->engine=='mysqli')
        {
            return $this->mysqli->error;
        }
        if($this->engine=='mysql')
        {
            return mysql_error($this->mysql);
        }
    }
}

?>