PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Mehrere Mysql verbindungen mit Klasse (http://www.selfphp.de/forum/showthread.php?t=9944)

CrAnE 07.03.2005 16:44:19

Mehrere Mysql verbindungen mit Klasse
 
Hi,

Ich versuche mit einer Klasse mehrere MySQL Verbindungen herzustellen...
Das sieht dann ungefähr so aus..
$verbindung1 = new mysql;
$verbindung1->connect("host", "user", "pw", 1);
$verbindung1->db("db", 1);

$verbindung2 = new mysql;
$verbindung2->connect("host"; "user", "pw", 2);
$verbindung2>db("db", 2);

so das klappt auch.. jedoch macht scheint es mir, das er die verbindung einfach ersetzt und nicht eine neue startet....

Also die abfrage bei der ersten verbindung klappt... wenn ich dann jedoch die 2te starte kann ich nix mehr aus der 2ten db auslesen....

hier mal ein codeschnipsel
PHP-Code:

class mysql{
    var 
$error false;
    var 
$connection = array();
    var 
$result;
    function 
connect($host$user$pass$id){
      
$connection = @mysql_connect($host$user$pass);
      if(!
$connection){
        
$this->error true;
      }else{
        
$this->connection[$id] = $connection;
      }
    }
    function 
db($db$id){
      
$db = @mysql_select_db($db$this->connection[$id]);
      if(!
$db){
        
$this->error true;
      }
    }


mfg Crane

|Coding 07.03.2005 17:14:53

AW: Mehrere Mysql verbindungen mit Klasse
 
ganz einfach:

falsch:
PHP-Code:

var $connection = array();
//...
$connection = @mysql_connect($host$user$pass);
//...
$this->connection[$id] = $connection

wenn du so vorgehst, dann passiert folgendes:

$verbindung1->connect(...): $connect wird als string definiert
$verbindung1->db(...): $connect wird als array definiert (array wird überschrieben)

$verbindung2->connect(...): $connect wird als string definiert
$verbindung2->db(...): $connect wird als array definiert (array wird überschrieben)

merkst du was passiert?

du schmeißt so immer wieder dein array ([private] $connect) weg, kein wunder das du immer nur eine connect resource hast...

du musst das array oder den string umbenennen.

CrAnE 07.03.2005 17:23:23

AW: Mehrere Mysql verbindungen mit Klasse
 
hm...
wiso wird durch db das array überschrieben??? wie kann ich das problem lösen??? also man könnte theortisch ja statt "var $connection = array();" einfach "var $connection1;" und "var $connection2;" machen aber dann müsste man sich ja auch ne max anzahl von verbindungen machen.... hast du ne idee/tip?

|Coding 07.03.2005 17:30:15

AW: Mehrere Mysql verbindungen mit Klasse
 
nein, ich meine das so:
PHP-Code:

<?php
class mysql
    var 
$error false
    var 
$connection = array(); 
    var 
$result;
    var 
$con '';
    function 
connect($host$user$pass$id){ 
      
$con = @mysql_connect($host$user$pass); 
      if(!
$con){ 
        
$this->error true
      }else{ 
        
$this->connection[$id] = $con
      } 
    } 
    function 
db($db$id){ 
      
$db = @mysql_select_db($db$this->connection[$id]); 
      if(!
$db){ 
        
$this->error true
      } 
    } 
}
?>


CrAnE 07.03.2005 17:38:18

AW: Mehrere Mysql verbindungen mit Klasse
 
weiß nicht ob ich jetzt blöd bin aber ich sehe keinen direkten unteschied! das mit "var $con" bring doch meiner meinung nix oder??? du speicherst doch garnix in $con dann müsste da ja $this->con = xxx heißen oder?

|Coding 07.03.2005 17:42:11

AW: Mehrere Mysql verbindungen mit Klasse
 
lass das script doch einfach mal laufen...

|Coding 07.03.2005 17:50:46

AW: Mehrere Mysql verbindungen mit Klasse
 
äh, sorry. $con ist ja private und nicht public.

also ist es so richtig:
PHP-Code:

//...
      
$this->con = @mysql_connect($host$user$pass); 
      if(!
$this->con){ 
        
$this->error true
      }else{ 
        
$this->connection[$id] = $this->con;
//... 


CrAnE 07.03.2005 17:55:44

AW: Mehrere Mysql verbindungen mit Klasse
 
Klappt nicht! Was soll ich machen.. ich verzweifle bald!

CrAnE 07.03.2005 18:30:51

AW: Mehrere Mysql verbindungen mit Klasse
 
Hm noch wer da??? ich kann ja mal den fehler posten:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in H:htdocsTestsclasses2.php on line 61

also ich mache 3 abfrage...der genaue ablaus:

ich starte verbindung 1.
mache eine abfrage mit verbindung1.

ich starte verbindung 2
mache eine abfrage mit verbindung 2.

ich mache eine abfrage mit verbindung1.

alle abfragen klappen nur die letzte nicht??? was soll ich machen?

|Coding 07.03.2005 19:01:29

AW: Mehrere Mysql verbindungen mit Klasse
 
ok,

weist du was dein problem ist?

1. das mit $this-con wie ich gesagt habe ist richtig.
2. du versuchst die ganze zeit zwei verbindungen zu ein und dem selben server auf zunehmen.
3. du musst der funktion connect() einen rückgabewert verpassen, damit die jeweilige verbingung auch nutzen kann.

4. wenn es probleme gibt poste ich dir die korrekte class.


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:46:38 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.