[PHP/PEAR] Could not find instance error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • k0ewl
  • Registratie: December 2003
  • Laatst online: 18-08-2023
Hoi GoTters,

ik ben bezig met de PEAR package en dan vooral MDB2.
Dat is de vervanger van de vroeger heel bekende DB.

Het verbinding maken met de database werkt. En dat al na 1 dag :(
Maar nu het volgende, ik wil mijn tables listen.

Ik heb een database class gemaakt die de class MDB2_Driver_Manager_Common extend.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class database extends MDB2_Driver_Manager_Common {
    private $db;
    private $data_source_name;
    private $tables;
    
    function __construct() {        
        $this->db               = null;
        $this->data_source_name = null;
        $this->tables           = array();
    }
    
    function connect($dsn) {    
        $this->data_source_name = MDB2::parseDSN($dsn);
                
        $this->db = &MDB2::connect($this->data_source_name);
                
        if(MDB2::isConnection($this->db)) {         
            $this->tables = $this->list_tables();
            return true;
        }
        else return false;
    }
    
    public function list_tables() { 
        $this->tables = $this->listTables();
        
        if(!MDB2::isError($this->tables)) {         
            for($i = 0; $i < sizeof($this->tables); $i++) {
                $table = array($this->tables[$i], $this->listTableFields($this->tables[$i]));
                    
                $this->tables[$i] = $table;
            }
        } else {
            echo $this->tables->getMessage().'<BR>'.$this->tables->getUserInfo();
            $this->tables = array();
        }
    }
    
    public function table_exists($table_name) {                 
        if(is_array($this->tables)) {
            if(in_array($table_name, $this->tables)) return true;
            else return false;
        } else return false;
    }
    
    public function field_exists($table, $field) {
        if($this->table_exists($table)) {
            if(in_array($field, $this->tables)) {
                return true;
            } else return false;
        } else return false;
    }
}


Nou wil ik dus de functio nlist_tables uitvoeren om zo een 2 dimensionale array te krijgen met alle namen en velden vna mijn tables. op deze manier:
code:
1
2
3
4
5
array:
[users][id][name][address]
[test][id][tester][time][date]

etc etc


Maar het probleem is dat ik nu de error krijg: MDB2 Error: not found.
Om daar wat meer info over te krijgen had ik ook nog getuserInfo() aangeroepen en daaruit kwam dan: Could not find MDB2 instance.

Maar als ik $GLOBALS['_MDB2_databases'] doe, krijg ik wel mooi mijn MDB2 instance te zien.

Weet iemand waar het aan kan liggen?

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."


Acties:
  • 0 Henk 'm!

  • k0ewl
  • Registratie: December 2003
  • Laatst online: 18-08-2023
*Bump

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."


Acties:
  • 0 Henk 'm!

  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 08-12-2024

megamuch

Tring Tring!

Hoe roep je die class aan? Laat is zien hoe je je db class aanroept. Misschien gaat daar wat fout.

Verstand van Voip? Ik heb een leuke baan voor je!


Acties:
  • 0 Henk 'm!

  • k0ewl
  • Registratie: December 2003
  • Laatst online: 18-08-2023
Nou... mijn database class extends de MDB2_Driver_Manager_Common class. Welke weer de MDB2_driver_common extends.

Dus zodra ik $this->listTables() zou doen, zou hij toch de MDB2_Driver_Manager_Common.listTables() uitvoeren?

Dat doet hij dus ook, maar dan kent de MDB2_driver_common class geen instance id.

Dit is uberhaupt voor mij om met PHP en classes te werken en ook nog de eerste keer met de PEAR package.

De documentatie die er beschikbaar is schiet ongelooflijk tekort naar mijn mening, want er is geen fatsoenlijk voorbeeld bij. Als ik maar een voorbeeld met wat uitleg had. Want het enige wat ik nu heb is de API, waar dus nergens een voorbeeld bij staat.

Naja, als iemand daar zowiezo meer informatie over heeft, je weet me te vinden.

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Heb je de MDB2 driver voor de database die je gebruikt geinstalleerd?
Bijv: pear install MDB2_Driver_mysql

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • k0ewl
  • Registratie: December 2003
  • Laatst online: 18-08-2023
Mhh, das een goeie, ik zal morgen eens kijken of die geinstalleerd is. Het is btw een windows server.

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."

Pagina: 1