PDO problemer

Regulæruttrykk, objektorientering, samt problemstillinger omkring optimalisering og sikkerhet.

PDO problemer

Innlegg Zts » 09.01.2012 14:21

Hei.

Jeg har oppkoblingen til MySql databasen i en funksjon som jeg kaller øverst på siden.

Kode: Merk alt
function dbConnect() {   
   try { $DBH = new PDO("mysql:host=$server;dbname=$db", $user, $pass); }
   catch (PDOException $e) { echo $e->getMessage(); exit; }
}

Denne kobler seg opp fint.

Problemet dukker opp når jeg skal bruke denne koblingen lenger ned på siden for å hente ut data. Da er $DBH plutselig ikke satt lenger og scriptet feiler.
Jeg henter ut data ved bruk av en annen funksjon. Begge disse funksjonene inkluderes fra en felles fil som jeg kaller functions.inc.php.

Noen som vet hva problemet kan være?
Zts
Medlem
 
Innlegg: 50
Registrert: 02.09.2011 8:37

Re: PDO problemer

Innlegg solo » 09.01.2012 17:33

Har liten peiling på objektorientert programering, men vil tro at funksjonen skal returnere så du kan bruke det i main?


Kode: Merk alt
try { $DBH = new PDO("mysql:host=$server;dbname=$db", $user, $pass);
return $DBH;
}
Brukerens avatar
solo
Medlem
 
Innlegg: 989
Registrert: 15.10.2003 18:25
Bosted: Larvik

Re: PDO problemer

Innlegg Wi11iam » 09.01.2012 23:03

Variabler i funksjoner blir "glemt" hver gang du kaller de.
Deklarer $DBH som statisk for å unngå denne oppførselen. Er det en klasse så bruk en private variabel.

Kode: Merk alt
static $DBH;


Hvis du vil ha tilgang til denne variabelen i en annen funksjon, så kan du bruke en global.
http://php.net/manual/en/language.variables.scope.php
Wi11iam
Medlem
 
Innlegg: 189
Registrert: 15.12.2010 10:20

Re: PDO problemer

Innlegg DavidS » 10.01.2012 0:10

Du kan også bruke pass-by-reference
DavidS
Seniormedlem
 
Innlegg: 3667
Registrert: 17.05.2006 17:08

Re: PDO problemer

Innlegg Zts » 10.01.2012 9:25

Takk for svar :)

Jeg valgte å legge dbConnect i en egen php fil for så å inkludere den på toppen. Koblingen avslutter jeg bare på bunnen av siden.
Festlig hvordan man ser seg blind på elementære ting når man har holdt på for lenge :)
Zts
Medlem
 
Innlegg: 50
Registrert: 02.09.2011 8:37

Re: PDO problemer

Innlegg bamse » 26.02.2012 12:32

Jeg også bruke PDO.
Gjort det slik:

Kode: Merk alt
function db()
{
    static $db = null;
    if ($db == null) {
        $db = new PDO('mysql:host=localhost;dbname=simple', 'root', '');
    }
   
    return $db;
}

// $q = query("select 1 from user where id = ?", array("dust"));
// if ($q) {
//    while ($row = $q->fetch()) {
//      ....
//    }
//}
function query($sql, $mixed = array())
{
    $db = db();
    if (!empty($mixed)) {
        if (!is_array($mixed)) {
            $mixed = array($mixed);
        }
    }
    $p = $db->prepare($sql);
    $p->execute($mixed);
    return $p;
}


Gjør det enkelt å greit, jeg hater måten PDO gjør ting med objekter etc. blir seriøst dårlig av det. Jeg vil ha det enkelt!
Brukerens avatar
bamse
Medlem
 
Innlegg: 773
Registrert: 08.08.2005 15:20
Bosted: Akershus


Gå til Avansert PHP

Hvem er i forumet

Brukere som leser i dette forumet: Ingen registrerte brukere og 4 gjester