php - How to connect to two different MySQL DB in the same class -
i have class called database
. looks this
class database { private $conexion; private $paisconexion; var $db; function __construct($db='default') { $this->db = $db; include '../settings/variables.php'; if(isset($bbdd)){ $conexion = mysql_connect($bbdd["server"], $pais[0]['user'], $pais[0]['pass']) or die('no se pudo conectar: '.mysql_error()); // seleccionamos la base de datos mysql_select_db($x[0]['database']) or die('no se pudo seleccionar la base de datos'); if($conexion) { $paisconexion = mysql_connect($bbdd["server"], $pais[$this->db]['user'], $pais[$this->db]['pass']) or die('no se pudo conectar: '.mysql_error()); mysql_select_db($pais[$this->db]['database']) or die('no se pudo seleccionar la base de datos'); } } else{ echo 'el sistema no se pudo conectar la base de datos.'; exit; } } public function execute($sql) { $result = mysql_query($sql) or die("error: ejecución de consulta: $sql<br>\n"); return $result; } }
i trying make 2 connection 2 different database using variable $conexion
, $paisconexion
.
my question is possible .
i mean suppose creating object class
$obj = new database(1); $res = obj->execute($sql);
so how the class decide of connection has use ? .
i think doing wrong way . if 1 has idea please let me know
thanks in advance
you can't create 1 class both databases. unless pass parameter specifies witch connection use. must use 2 different variables different connections. , don't use deprecated mysql_*
functions
class database { // private variables accessed functions private $localdb, $remotedb; // use constants instead of magic numbers const local = 1, remote = 2 public function _construct() { $this->localdb= new pdo('mysql:host=localhost;dbname=test', 'username', 'password'); $this->remotedb= new pdo('mysql:host=remore;dbname=test2', 'username', 'password'); } // can't use constants in function header - - - - -v public function execute($querystring, $params = [], $usedb = 1) { // static:: take variable class , not parent class (if extends something) if ($usedb == static::local) { $db = $this->local; } elseif ($usedb == static::remote) { $db = $this->remote; } $query = $db->prepare($querystring); // usage of prepared statement return $query->execute($params); } } $db = new database(); $db->execute( 'select * table column = :columnval', // named placeholders instead of tons of '?' [':columnval' => 5], // parameters database::local // constant class );
Comments
Post a Comment