PDO in OOP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

W W

W W

04/05/2009 21:34:00
Quote Anchor link
Vraag,

Ik ben bezig met een beveilings classe. Hierbij wil ik de PDO classe gebruiken voor de communicatie naar mijn database.

Kan ik in een constructor een connectie maken met de db, en die var gebruiken in de rest van mijn functies? Zoja hoe?

Ik had een var in een classe gezet, vervolgens connectie met die db gemaakt via PDO. Echter, als ik het in een andere functie wil gebruiken werkt dit niet.

$db = var met connectie
$this->db->exec('QUERY') werkt dan niet.

Of moet ik per functie weer opnieuw gaan connecten etc etc?

Graag voorbeelden hoe je dit het beste aanpakt. Bij onduidelijkheid post ik wat code.

Mvg.
 
PHP hulp

PHP hulp

10/05/2021 20:46:02
 

04/05/2009 21:40:00
Quote Anchor link
Als ik naar:
$db = var met connectie
$this->db->exec('QUERY') werkt dan niet.
kijk, bedoel je dan niet dat het zo wordt:
$db->exec('QUERY') werkt dan niet.
?
En nee, je hoeft niet voor elke functie weer opnieuw gaan connecten
 
Midas

Midas

04/05/2009 21:42:00
Quote Anchor link
Je kunt hiervoor het beste een registry klasse gebruiken. In de constructor kan je die dan aanroepen. Als er al verbinding is, zal de bestaande verbinding teruggegeven worden. Als er nog geen verbinding is, wordt die gemaakt en teruggegeven.
 
Ed

Ed

04/05/2009 21:50:00
Quote Anchor link
Singleton instance van een Databasemanager, welke diverse connecties kan onderhouden met verschillende databases, en verschillende abstraction layers.
 
W W

W W

04/05/2009 21:51:00
Quote Anchor link
Ok even voor de duidelijkheid, een stuk code.

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
<?php
class Auth
{
    var
$db;
    
    public function __construct()
    {

        $this->db = new PDO('mysql:host=localhost;dbname=**','**','**');
    }

    
    public function login ($username, $password)
    {

        $qAttempt = $this->db->exec('INSERT INTO login_attempts (ip_address,
                                                            username,
                                                            password,
                                                            date)
                                                            VALUES
                                                            ('
.$_SERVER['REMOTE_ADDR'].',
                                                            '
.$this->db->quote($username).',
                                                            '
.$this->db->quote($password).',
                                                            NOW())'
);
                                                            
        /*
        Omdat de variable overal aan te moten spreken is binnen deze klasse, definieer ik heb ook hierboven. Echter spreek je hem aan als $this->var.
        Omdat die var weer met het PDO te maken heeft en er functies zijn binnen die classe probeer ik die dus aan te roepen via $this->db->quote().
        
        Hoe kan ik het beste gebruik maken van het PDO klasse in mijn eigen klasse zonder elke keer per functie een connectie te maken?
        */

    }
}

?>
 
Nicoow Unknown

Nicoow Unknown

04/05/2009 21:53:00
Quote Anchor link
registry class heb k ooit ook naar gekenen,, vond ik toch vrij lastig,,
nu heb ik het gewoon zo:

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
<?php
class iets
{
private $db;
public function __construct()
{

     $this->db = new PDO connectie;
     // dat kan dus hier
}

public function getDbItem($id)
{

    $this->db->prepare("query");
}

?>
 
W W

W W

04/05/2009 21:56:00
Quote Anchor link
Nico, ik heb precies hetzelfde hierboven, maar dat vinden ze niet echt leuk :P
 
Mark PHP

Mark PHP

04/05/2009 23:07:00
Quote Anchor link
Offtopic:
Momenteel gebruik je PHP4 en 5 door elkaar heen, ik raad je aan om het bij PHP5 te houden.
Gebruik dus public / protected / private in plaats van var bij properties.
 
Willem Jan Z

Willem Jan Z

04/05/2009 23:09:00
Quote Anchor link
Waarom zou dat niet werken :/ Zie geen reden waarom dat niet zou kunnen?

@midas: Er is geen beste methode, ieder heeft zelf zijn favoriete methode. Ik zelf hou namelijk niet echt van een Registry.
 
W W

W W

04/05/2009 23:38:00
Quote Anchor link
Ik denk dat ik problemen met mijn host heb. Volgens PHP info draai ik PHP 5.x. Toch accepteerd hij alleen var en niet public of protected of private.

$this->db->query of $this->db->exec werken ook niet. Krijg echter ook geen foutmeldingen.

Ik heb laatste tijd alleen maar zulke rare fouten, dus ik zal eens met mijn host bellen wat er aan de hand is.
 



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.