Database connectie error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niels K

Niels K

07/01/2010 09:37:00
Quote Anchor link
Goeiemorgen, ik kreeg net een error die ik van mijn leven nog nooooit gezien heb namelijk:

Fatal error: Interface function Database::connect() cannot contain body in G:\wamp\www\OOP\leren\tabel\database.class.php on line 9

Dit is mijn function in de class database

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
public function connect ($server = '', $username = '', $password = '', $database = '' $new_link = true, $client_flags = 0)
{

            
    $this->_Mysqli = mysqli_connect($server, $username, $password, $database, $new_link, $client_flags);  
            
}

?>


en ik roep hem zo aan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$db
= new MysqlDatabase();
$db->connect ('localhost', 'root', '', 'peter');
?>


Weet iemand wat ik fout doe?

EDIT

Er gaat wat fout met het topic.. Hij staat in admin/mod hulp.. Hoe wijzig ik dat?
Gewijzigd op 01/01/1970 01:00:00 door Niels K
 
PHP hulp

PHP hulp

07/12/2021 02:09:22
 
Nicoow Unknown

Nicoow Unknown

07/01/2010 09:47:00
Quote Anchor link
Dat laatste kan niet,,
Maar wat je fout doet,
Je heb een interface class,, en in een interface mogen functies geen code hebben.
Een interface is enkelt om verplichte functies op te stellen voor een algemeen object.
Bijvoorbeeld een organisme interface zal altijd een functie getLevend hebben, om maar iets te noemen,, omdat ieder organisme leeft.
Dus een interface is eigenlijk een rauwe blauwdruk van hoe een bepaald object er MINIMAAL uit moet zien.
 
Mr.Ark

Mr.Ark

07/01/2010 09:47:00
Quote Anchor link
-> $database = ''

komma?
 
Niels K

Niels K

07/01/2010 09:55:00
Quote Anchor link
@nico

Dit heb ik ook.. ik heb een interface en dit is de class

class MysqlDatabase implements Database

@Mr.Ark klopt.. Maar dat verhelpt het probleem niet..

@nico (Nog een keer)

Hier heb je wat meer code.. Dan snap je het waarschijnlijk beter:)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<?php

    interface Database
    {
    
        public function connect()
        {
        
        }

        
        public function error ()
        {
        
        }

        
        public function errno ()
        {
        
        }

        
        public function escape ($string)
        {
        
        }

        
        public function query ($Query)
        {
        
        }

        
        public function fetchArray ($Result)
        {
        
            
        }

        
        public function fetchRow ($Result)
        {
        
        }

    
        public function fetchAssoc ($Result)
        {
        
        }

        
        public function fetchObject ($Result)
        {
        
        }

        
        public function numRows ($Result)
        {
        
        }

        
        public function close ()
        {
        
        }
        
    }

    
    class MysqlDatabase implements Database
    {
    
        private $_Mysqli;
        
            public function connect ($server = '', $username = '', $password = '', $database = '', $new_link = true, $client_flags = 0)
            {

            
                $this->_Mysqli = mysqli_connect($server, $username, $password, $database, $new_link, $client_flags);  
            
            }

            
            public function error ()
            {

            
                return mysqli_errno ($this->_Mysqli);
            
            }

            
            public function errno ()
            {

            
                return mysql_error ($this->_Mysqli);
            
            }

            
            public function escape ($string)
            {

            
                return mysqli_real_escape_string ($string, $this->_Mysqli);
            
            }

            
            public function query ($Query)
            {

            
                return mysqli_query ($Query, $this->_Mysqli);
            
            }

            
            public function fetchArray ($Result, $array_type = MYSQLI_BOTH)
            {

            
                return mysqli_fetch_array ($Result, $array_type);
            
            }

            
            public function fetchRow ($Result)
            {

            
                return mysqli_fetch_row ($Result, $this->_Mysqli);
            
            }

            
            public function fetchAssoc ($Result)
            {

            
                return mysqli_fetch_assoc ($Result, $this->_Mysqli);
            
            }

            
            public function fetchObject ($Result)
            {

            
                return mysqli_fetch_object ($Result, $this->_Mysqli);
            
            }

            
            public function numRows ($Result)
            {

            
                return mysqli_num_rows ($Result, $this->_Mysqli);
            
            }

            
            public function close ()
            {

            
                return mysqli_close ($this->_Mysqli);
            
            }
        
    
    }

    
    $db = new MysqlDatabase();
    $db->connect ('localhost', 'root', '', 'peter');
    
    $Result = $db->query ("SELECT naam FROM gebruikers");
    
        while ($row = $db->fetchAssoc($Result))
        {

            
            echo $row['naam'];
            
        }

    
    

?>
 
Nicoow Unknown

Nicoow Unknown

07/01/2010 10:10:00
Quote Anchor link
In je interface de { } vervangen door een ;
Omdat hij anders denkt dat je toch een body heb.
Dus je interface word:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
interface Database
    {    
        public function connect();
        
        public function error ();
        
        public function errno ();
        
        public function escape ($string);
        
        public function query ($Query);
        
        public function fetchArray ($Result);
        
        public function fetchRow ($Result);
    
        public function fetchAssoc ($Result);
        
        public function fetchObject ($Result);
        
        public function numRows ($Result);
        
        public function close ();        
    }

?>
 
Niels K

Niels K

07/01/2010 10:29:00
Quote Anchor link
Aha,

Nu krijg ik alleen dit nog


Warning: mysqli_query() expects parameter 1 to be mysqli, string given in G:\wamp\www\OOP\leren\tabel\database.class.php on line 76

Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in G:\wamp\www\OOP\leren\tabel\database.class.php on line 97

Maar naar mijn weten staat dat gewoon goed toch?
 
Nicoow Unknown

Nicoow Unknown

07/01/2010 10:38:00
Quote Anchor link
Lees je foutmeldingen eens.
Dan is het toch vrij duidelijk.

mysqli_query() Verwacht dat de eerste parameter een mysqli is.
Jij geeft een string mee.
Even snel opgezocht voor je:
mysqli_query ( resource link, string query [, int resultmode] )

Dus je query zou er zo uit moeten zien:
mysqli_query($this->_Mysqli, $Query);

2e is gewoon dat je die 2e parameter weg moet halen,, omdat die namelijk alleen een result wilt,, en niet de database connectie.
 
Niels K

Niels K

07/01/2010 10:39:00
Quote Anchor link
Ok, ik doe altijd eerst query en daar naar db connectie.. Maar goed bedankt voor je reactie's
 
Nicoow Unknown

Nicoow Unknown

07/01/2010 10:42:00
Quote Anchor link
Maar misschien is het leuk om eens naar PDO te kijken,, dan kan je namelijk heel makkelijk tussen verschillende types database switchen.
It's just an suggestion.
Maar ik ben zelf niet bekend met MysqlI, dus heb ook geen idee hoe het allemaal werkt,, maar dat is gewoon wat internet mij vertel,t
And who am i to argue the internet?
 
Niels K

Niels K

07/01/2010 10:50:00
Quote Anchor link
Haha ja eigenlijk ben ik nu PDO aan het herschrijven of een soort en met van.. Ik gebruik ook PDO maar ik wilde het ook eens proberen met MYSQLi
 
Nicoow Unknown

Nicoow Unknown

07/01/2010 11:04:00
Quote Anchor link
Ok, dan kunt u mijn brief als niet verzonden beschouwen.
 
Niels K

Niels K

07/01/2010 11:10:00
Quote Anchor link
Haha, neaj bedankt dat je me er op wijst.. maar ik vind PDO ook nog best wel moeilijk.. En dan direct 2 dingen gebruiken vind ik weer even te veel van het goede:)
 
Bas IJzelendoorn

Bas IJzelendoorn

07/01/2010 11:44:00
Quote Anchor link
Zit je niet in de verkeerde categorie (hier op het forum)??
 
Niels K

Niels K

07/01/2010 11:47:00
Quote Anchor link
Ja, kijk maar in de begin post:D
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.