Ik ben op dit moment bezig met een simpel CMS, waarbij ik gebruik maak van twee databases. In één database komen de rechten te staan voor het CMS, in de andere komen de gegevens voor een website.
Hierbij dacht ik een MySQL class te maken en hier gewoon twee keer een instance van te maken. Helaas gaat dit fout op het moment dat ik aankom bij de functie mysql_query.
Ik heb een simpele versie gemaakt van het probleem wat ik heb:
class.mysql.php
index.php
SQL master
SQL slave
Als ik de bovenstaande code uitvoer, krijg ik het volgende als reactie:
Door de eerste string (master), weet ik dat hij wel de goede HielkeJ_mysql variable pakt ($masterDB), maar bij de query gaat het toch weer fout.
Door de laatste twee strings, weet ik dat de HielkeJ_mysql instances echt verschillend zijn.
Het lijkt erop dat er dus iets fout gaat bij de link_identifier optie van mysql_query.
Heeft iemand van jullie misschien een idee wat ik fout doe of waarom dit niet goed gaat?
alvast bedankt.
Hierbij dacht ik een MySQL class te maken en hier gewoon twee keer een instance van te maken. Helaas gaat dit fout op het moment dat ik aankom bij de functie mysql_query.
Ik heb een simpele versie gemaakt van het probleem wat ik heb:
class.mysql.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <?php class HielkeJ_mysql { private $connection = null; private $tmp; public $database; public function __construct($db) { $this->connect($db['host'], $db['user'], $db['pass'], $db['database']); } public function connect($host, $user, $pass, $database) { $this->connection = mysql_connect($host, $user, $pass); mysql_select_db($database, $this->connection); $this->database = $database; return ($this->connection) ? true : false; } public function query($sql) { var_dump($this->database); $query = mysql_query($sql, $this->connection); if ($query === false) { var_dump('Error in query: '.$sql.' => Foutmelding: '.mysql_error()); } return $query; } } ?> |
index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <?php include('class.MySQL.php'); $db = array( 'host' => 'localhost', 'user' => 'root', 'pass' => 'password', 'database' => 'master', ); $masterDB = new HielkeJ_mysql($db); $db = array( 'host' => 'localhost', 'user' => 'root', 'pass' => 'password', 'database' => 'slave', ); $slaveDB = new HielkeJ_mysql($db); $sql = " SELECT * FROM test"; $query = $masterDB->query($sql); var_dump($masterDB->database, $slaveDB->database); ?> |
SQL master
code:
1
2
3
4
5
6
7
| CREATE DATABASE `master` ; CREATE TABLE IF NOT EXISTS `test` ( `test` varchar(20) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `test` (`test`) VALUES ('test'); |
SQL slave
code:
1
| CREATE DATABASE `slave` ; |
Als ik de bovenstaande code uitvoer, krijg ik het volgende als reactie:
code:
1
2
3
4
| string(6) "master" string(86) "Error in query: SELECT * FROM test => Foutmelding: Table 'slave.test' doesn't exist" string(6) "master" string(5) "slave" |
Door de eerste string (master), weet ik dat hij wel de goede HielkeJ_mysql variable pakt ($masterDB), maar bij de query gaat het toch weer fout.
Door de laatste twee strings, weet ik dat de HielkeJ_mysql instances echt verschillend zijn.
Het lijkt erop dat er dus iets fout gaat bij de link_identifier optie van mysql_query.
Heeft iemand van jullie misschien een idee wat ik fout doe of waarom dit niet goed gaat?
alvast bedankt.