[php] Problemen bij maken error handler

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 05-09 22:23
Al jaren gebruik ik in ieder script een klasse database om verbinding te maken met een MySQL database. Het leek me echter handig om die klasse eens uit te breiden met een error handler. De klasse ziet er als volgt uit:

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
class database {

    var $querynum = 0;
    var $errors = "";

    function add_error($error) {
        $this->errors .= $error."<br>\n";
    }

    function check_error() {
        if($this->errors == "")
            return false;
        else
            return true;
    }
    
    function connect($dbhost="localhost", $dbuser, $dbpw, $dbname, $pconnect=0) {
        if($pconnect) {
            mysql_pconnect($dbhost, $dbuser, $dbpw) 
            or 
            $this->add_error(mysql_error());
        } else {
            mysql_connect($dbhost, $dbuser, $dbpw)
            or 
            $this->add_error(mysql_error());
        }
        mysql_select_db($dbname) or $this->add_error(mysql_error());
    }

    function fetch_array($query) {
        $query = mysql_fetch_array($query) or $this->add_error(mysql_error());
        return $query;
    }

    function query($sql) {
        $query = mysql_query($sql) or $this->add_error(mysql_error());
        $this->querynum++;
        return $query;
    }
}


Het volgende is het geval:
PHP:
1
2
3
4
5
6
$db = new database; // Instantie van database aanmaken
$db->connect("", "user", "pass", "mijndb"); // Script verbinding laten maken
$db->query("BLAAAA"); // Een query met een fout uitvoeren

if($db->check_error()) // Controleren op fouten
  echo "De volgende fouten deden zich voor:<br>".$db->errors; // Fouten weergeven


Echter wat ik ook probeer, check_error() geeft altijd FALSE terug en $db->errors is idd altijd leeg. ;(
Als ik $errors op het begin al een waarde meegeef dan laat hij deze wel zien. Het probleem zit het hem volgens mij dus in het uitvoeren van de Query. Bij een foute query wordt nl. het gedeelte na de OR niet uitgevoerd.

or die(mysql_error());

werkt wel maar ook

or $this->errors .= mysql_error();

geeft geen resultaat.
Heeft iemand enig id hoe dit kan. Over OR valt weinig documentatie te vinden dus ik weet niet wat wel of niet mogelijk is maar het lijkt me toch sterk dat dit niet zou kunnen...

[ Voor 6% gewijzigd door Maxonic op 06-07-2003 16:22 . Reden: layout ]


Acties:
  • 0 Henk 'm!

Verwijderd

probeer anders gewoon eens het volgende

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?

function add_error($text)
{
    $this->errors[] = $text;
}

function check_error() 
{ 
    if(isSet($this->errors) && strlen($this->errors[0]) > 0) 
    {
        return true; 
    }
    else 
    {
        return false; 
    } 
}


het is maar een idee on the fly.....

Acties:
  • 0 Henk 'm!

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 05-09 22:23
* Maxonic schaamt zich diep |:( |:( |:(

Het script waar ik het testte bestond uit een pagina waar je een SQL query op kon geven. Het forpje met deze query werd vervolgens gepost. Na het posten werd de query uitgevoerd en na het uitvoeren werd de pagina d.m.v. Header("Location: blabla"); doorgestuurd. Daar werd vervolgens op errors gechecked. Geen wonder dat er daar dan geen errors gevonden werden :D
Nu heb ik die redirect weggehaald en alles werkt perfect!

Toch bedankt voor de moeite!

Acties:
  • 0 Henk 'm!

Verwijderd

yw :)