tirsdag den 26. januar 2016

PHP Database Class

PHP DB CLASS

Det første vi gør er at lave vores Class, efter vi har lavet vores Class includer vi den der hvor vi vil bruge den.
Efter den er blevet included defineres Classen med $varname = new classname();
Men videre til at lave vores Class.

class dbModel{ }




Det første vi gør inde i vores dbModel class er at sætte vores globale variabler.
Vi bruger metoden "private" så variablerne kun kan ses inde i vores class.
Som vi bruger i vores funktioner, default værdien i connObj vil os kunne blive sat via vores contruct.


__construct bliver automatisk kørt når du kalder din class $varname = new classname($var);
Når der blir kaldt til globale variable eller funktioner bruger man $this->variable / $this->function() for at bruge variable eller kører funktion.



__destruct bliver kørt automatisk når php færdiggør loading af siden, dvs at som i dette tilfælde vil vi
sætte vores connection close() funktion ind eftersom det er det allersidste der skal ske.



Her ses funktionen newConnection, dette er en public function så den kan kaldes udfra classen.
$dbmodel = new dbModel();
$dbmodel->newConnection();
I selve functionen bliver der oprettet forbindelse til databasen og vores globale variable conn blir sat.



Her bliver der brugt public functions til at sætte private variables og til sidst har vi en clear funktion
som automatisk kan tømme conditions og order variablen eller andre variabler når funktionen bliver kaldt.



Her har vi 2 funktioner findFirst og findAll hvor du automatisk vil hente fra databasen, på samme måde
som vi gjorde i SQL tutorialen. Der vil være eksempler i bunden, hvordan man bruger funktionerne.



Vores insert der sørger for at vi kan sætte noget ind i vores database tabel, vi bruger fields og values variabler som
er blevet sendt med i funktionen.



Vores update der sørger for at vi kan opdatere vores database tabel, vi bruger fields_values variable som
er blevet sendt med i funktionen, som er en string.



Vores delete der sørger for at vi kan slette fra vores database tabel, vi bruger id som condition,
men man kan sagtens lave den til andet.



Til sidst har vi execute, som kan kører hvilke som helst query, men den kan ikke hente noget!
Også vores error funktion så vi kan tjekke hvis der har været fejl.

Her er exempler, på engelsk:

the connection this can be called by $model = new dbModel(obj); its recommended to include at least the table variable as show below.
but variables that can be used is 'server','user','pw','db','charset' & 'table' if you have not defined it when making the new class
the default connection values will be set (there is no default table!)
$model = new dbModel(array('table'=>'questions','charset'=>'utf8'));

setting global variable definations
$model->setOrder(field,type); if type is not set it will default to DESC
$model->setOrder('id','asc'); this will set the order to order by id and the type will be ASC

the condition for when using findFirst, findAll & update. where should not be set!
$model->setConditions(condition);
this will make the query find all records where name starts with N but is not Nikolaj
$model->setConditions('name like "N%" and name!="Nikolaj"');

the table to be used in the next functions you'll use
$model->setTable(table);
this will set the table for the next functions to the 'newsletter' table
$model->setTable('newsletter');

findAll() can be customized to findAll(fields,limit)
if no variables are in the function fields will default to * and there will be no limit
findAll('id,name',4) this function will find columns id and name, and limit the records found to the first 4
$records = $model->findAll();
foreach ($records as $k => $v) {
  echo $v['id'] . "/" . $v['name'] . "break tag";
}

findFirst(fields) is almost the same as findAll but this will only return the very first record the database finds
$record = $model->findFirst();
echo $record[0]['id'] . "/" . $record[0]['name'] . "break tag";

insert(fields,values) fields and values must be defined in 2 arrays
$model->insert(array('name','msg','time'),array('MyName','some message',date("Y-m-d H:i:s")));

update(fields_values) fields_values must be defined and is defined by a string with the column=value format split by a ',' as shown below
$model->update("name='new name',msg='new message',time=date("Y-m-d H:i:s")");

del(id) deletes a record where id is your defined id as condition as shown below, that will delete the record where id=2
$model->del(2);

execute(query) executes any query, but will not fetch any results (primary to update/insert/delete/other)
$model->execute('delete from mytable where mycondition=1');

newConnection(obj) same as when you first call the class, this can be used to open a new connection if needed
$model->newConnection(array('table'=>'questions','charset'=>'utf8'));

used to check for errors
echo $model->error();

2 kommentarer:

  1. Fedt lavet på så kort tid! Thumbs up!

    SvarSlet
  2. Blog er hermed bookmarked, jeg skulle lige bruge 5-10 min på at forstå hvad det egentligt var jeg læste, men derefter er det smooth :)

    SvarSlet