Tips voor mijn eerste class (database)
Dit is mijn eerste PHP class.
Ik ben (ook) begonnen met een database class.
Ik ben nieuwsgierig naar jullie mening en hoor graag tips.
Hier mijn code:
Code (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
41
42
43
44
45
46
47
48
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
<?php
class Db{
private $server;
private $username;
private $password;
private $database;
private $connection;
public function setVars($server, $username, $password, $database){
$this->server = $server;
$this->username = $username;
$this->password = $password;
$this->database = $database;
}
public function dbConnectie(){
if(!$this->connection = mysql_connect($this->server,$this->username,$this->password)){
echo 'Kon niet verbinden met de database 1';
}
if(!mysql_select_db($this->database, $this->connection)){
echo 'Kon niet verbinden met de database 2';
}
}
public function query($sql){
if(!mysql_query($sql)){
include 'mysql_foutmelding.php';
return false;
}else{
return true;
}
}
public function sluitConnectie(){
return mysql_close($this->connection);
}
}
$db = new Db();
$db->setVars("localhost", "gebruikersnaam", "password", "database");
$db->dbConnectie();
if($db->query("UPDATE testtabel SET naam='Bob' WHERE id='1'")){
echo 'De naam is aangepast!';
}
$db->sluitConnectie();[/code]
class Db{
private $server;
private $username;
private $password;
private $database;
private $connection;
public function setVars($server, $username, $password, $database){
$this->server = $server;
$this->username = $username;
$this->password = $password;
$this->database = $database;
}
public function dbConnectie(){
if(!$this->connection = mysql_connect($this->server,$this->username,$this->password)){
echo 'Kon niet verbinden met de database 1';
}
if(!mysql_select_db($this->database, $this->connection)){
echo 'Kon niet verbinden met de database 2';
}
}
public function query($sql){
if(!mysql_query($sql)){
include 'mysql_foutmelding.php';
return false;
}else{
return true;
}
}
public function sluitConnectie(){
return mysql_close($this->connection);
}
}
$db = new Db();
$db->setVars("localhost", "gebruikersnaam", "password", "database");
$db->dbConnectie();
if($db->query("UPDATE testtabel SET naam='Bob' WHERE id='1'")){
echo 'De naam is aangepast!';
}
$db->sluitConnectie();[/code]
Gewijzigd op 29/08/2013 11:13:01 door Tom aan t Goor
Wat je bij setVars() doet is leuk, maar het past beter in een contructor. Doe je dit niet in de contructor, maak dan voor elke property een aparte setter.
Toevoeging op 29/08/2013 11:43:09:
Verder, de foutmelding bij de dbConnectie() methode is ook niet juist he. De eerste foutmelding zou moeten zijn "Kon geen verbinding maken met de database server" aangezien dat is wat je probeert.
Verder, stap over op mysqli. mysql word binnen niet al te lange tijd namelijk vervangen door mysqli.
Ik heb er nu dit van gemaakt.
Code (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
41
42
43
44
45
46
47
48
49
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
<?php
class Db{
private $server;
private $username;
private $password;
private $database;
private $connection;
public function __construct($server, $username, $password, $database){
$this->server = $server;
$this->username = $username;
$this->password = $password;
$this->database = $database;
}
public function dbConnectie(){
$errortekst = "";
if(!$this->connection = mysqli_connect($this->server,$this->username,$this->password)){
$errortekst .= 'Kon niet verbinden met de database server';
}
if(!mysqli_select_db($this->connection, $this->database)){
$errortekst .= 'Kon niet verbinden met de database';
}
return $errortekst;
}
public function query($sql){
if(!mysqli_query($this->connection, $sql)){
include 'mysql_foutmelding.php';
return false;
}else{
return true;
}
}
public function sluitConnectie(){
return mysqli_close($this->connection);
}
}
$db = new Db("localhost", "gebruikersnaam", "password", "database");
echo $db->dbConnectie();
if($db->query("UPDATE testtabel SET naam='Bob' WHERE id='1'")){
echo 'De naam is aangepast!';
}
$db->sluitConnectie();[/code]
class Db{
private $server;
private $username;
private $password;
private $database;
private $connection;
public function __construct($server, $username, $password, $database){
$this->server = $server;
$this->username = $username;
$this->password = $password;
$this->database = $database;
}
public function dbConnectie(){
$errortekst = "";
if(!$this->connection = mysqli_connect($this->server,$this->username,$this->password)){
$errortekst .= 'Kon niet verbinden met de database server';
}
if(!mysqli_select_db($this->connection, $this->database)){
$errortekst .= 'Kon niet verbinden met de database';
}
return $errortekst;
}
public function query($sql){
if(!mysqli_query($this->connection, $sql)){
include 'mysql_foutmelding.php';
return false;
}else{
return true;
}
}
public function sluitConnectie(){
return mysqli_close($this->connection);
}
}
$db = new Db("localhost", "gebruikersnaam", "password", "database");
echo $db->dbConnectie();
if($db->query("UPDATE testtabel SET naam='Bob' WHERE id='1'")){
echo 'De naam is aangepast!';
}
$db->sluitConnectie();[/code]
Gewijzigd op 29/08/2013 12:04:44 door Tom aan t Goor
Verder zou ik de dbconnectie automatisch in je constructor aanmaken.
En gebruik engelse namen voor je methods.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
public function dbConnectie(){
if(!$this->connection = mysqli_connect($this->server,$this->username,$this->password)){
return 'Kon niet verbinden met de database server';
}
if(!mysqli_select_db($this->connection, $this->database)){
return 'Kon niet verbinden met de database';
}
return false;
}
?>
public function dbConnectie(){
if(!$this->connection = mysqli_connect($this->server,$this->username,$this->password)){
return 'Kon niet verbinden met de database server';
}
if(!mysqli_select_db($this->connection, $this->database)){
return 'Kon niet verbinden met de database';
}
return false;
}
?>
Gewijzigd op 29/08/2013 12:22:34 door Bernhard Flokstra
En aangezien ik nooit heb gewerkt met Exceptions, en dus ook niet precies weet wat dit is, zal ik me hier eerst meer in verdiepen.
Bernhard, ik ga toch liever voor de variabele, dat komt omdat je dan in 1 keer kan zien wat er wel en niet werkt.
Uhm, als je geen connectie kan maken met je database, kan je uiteraard ook geen database selecteren. Als het eerste dus fout gaat weet je automatisch dus ook dat het tweede fout zal gaan. Beetje nutteloos om het tweede dus nog te doen....
Tom: Als je geen verbinding kan maken met de database server is het onmogelijk om wel de database te selecteren. Het is dus totaal onnodig om de database controle te doen als de verbinding vaalt.
Ik heb het veranderd.
Top. Nu rest mij nog een vraag. Waarom wil je dbconnectie niet in de constructor uitvoeren? Het je daar een reden voor? Is er een reden waarbij je de Db class moet instancieren zonder dat er een database verbinding tot stand komt?