Hacer un motor de SQL transparente a la base de datos es fundamental.
Así, si un día quieres cambiar de base de datos, sólo tendrás que tocar un archivo.
Para ello, se crea una interface (o clase totalmente abstracta) con los métodos generales de gestión de bases de datos (conectarse, desconectarse, hacer una consulta, etc).
Luego, por cada tipo de base de datos que exista, se crea una nueva clase que herede de la interfaz, y se programan sus métodos finales utilizando las funciones que te proporcione tu base de datos (mysql, microsoft sql server, oracle, etc).
Aquí tienes un ejemplo de implementación de bases de datos en MYSQL y MS SQL SERVER:
http://www.shapeshifter.se/2008/08/0...rface-for-php/
En ese enlace no lo pone, pero como toque final, se suele seguir el patrón factoría para crear conexiones.
Sería algo así:
Código PHP:
Ver original<?php
require_once('db_mysql.inc');
require_once('db_mssql.inc');
class Connectors
{
const MSSQL = 1;
static public function getConnection($type,$host,$username,$password,$db)
{
switch($type)
{
return new MySQLConnector($host, $username, $password, $db);
case self::MSSQL:
RETURN new MSSQLConnector($host, $username, $password, $db);
}
return null;
}
}
?>
Por último, donde necesites una conexión a la base de datos en tu propio PHP, usas:
Código PHP:
Ver original<?php
require_once('Connectors.php');
//CODIGO
$conectorBD=Connectors
::getConnection(Connectors
::MYSQL);
//MAS CODIGO
?>
Y si en el futuro, tienes que cambiar de base de datos, por ejemplo a MS SQL, solo tendrías que cambiar la línea a:
$conectorBD=Connectors::getConnection(Connectors:: MSSQL);
El resto del PHP, funcionaría igual.