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:
Het volgende is het geval:
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...
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 ]