BDD et interface compatible mysql / mysqli

Soyez le premier à donner votre avis sur cette source.

Vue 7 397 fois - Téléchargée 2 269 fois

Description

Pour développer en PHP il faut être agile, les environnements changent pas tous les mois
mais presque. J'étais habitué de mysql et dernièrement - horreur - je dois tout
reécrire en mysqli.

Le principe des couches et des sur-couches est supposé rendre cela transparant mais
en fait c'est réellement douloureux de changer complètement un site pour le migrer
de mysql vers mysqli. De plus, on atteind des sommets lorsqu'on est chez un hébergeur
(free.fr pour ne pas le citer) qui reste encore en mysql alors qu'en local je n'arrive
même plus à l'activer. Bref, j'ai donc fait 2 classes minimales, l'une pour mysql
(appelons la mysqliu) et l'autre pour mysqli (disons mysqliext), les 2 implémentent
la même interface ''sql'', et je switche selon si je suis en localhost ou online :

/*
  • MySQL : mysqli en local, mais mysql chez free
  • /

if($_SERVER["HTTP_HOST"] == 'localhost')
bdd::$bdd = new mysqliu(BDD_HOST, BDD_USER, BDD_PASS, BDD_BASE);
else
bdd::$bdd = new mysqlext(BDD_HOST, BDD_USER, BDD_PASS, BDD_BASE);
bdd::$bdd->set_debug(SITE_DEBUG);

// dans le ZIP : l'interface et les 2 classes

<?php
// l'interface affiche les méthodes communes aux 2 classes
interface sql
{

function __construct($host,$login,$pass,$base);

function set_debug($debug);
function set_dbdecal($var);
function set_prebdd($var);
function getmicrotime();

function escape_string($string);
function parse_query($req) ;
function errno();
function error();
function insert_id();
function affected_rows();
function result($res, $row, $field = NULL);
function num_rows($res);
function query($req, $explain = true);
function free_result($res);
function log_error($req);

function log($text);
function make_array_result($req);
function make_array($req, $explain = true);
function index_array($req, $idx = false, $explain = true);
function get_result($sql, $field);
function close();
}

?>

Je met juste l'interface ici, les 2 classes sont l'implémentation, version mysql ou
mysqli, cf dans le ZIP. Bon courage!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.