[php] database onafhankelijk programmeren.

Pagina: 1
Acties:

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 10:59

BierPul

2 koffie graag

Topicstarter
Wat ik me nou afvraag is het volgende.

Om mn code makkelijk te kunnen integreren in andere system ed zou het makkelijk zijn om database onafhanleijk te kunnen proggen.

Is het bijv mogelijk om een algemene_fetch_row functie te gebruiken die zowel op mysql, mssql, acces , sybase en de andere systemen werkt.

Of is dit een onrealistitsch streven :?

Ja man


  • Lurge
  • Registratie: Maart 2000
  • Niet online

Lurge

ActueleWind

Nee volgens mij is die functie er niet.

ActueleWind


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Er bestaan wel generieke database classes waarmee je kan connecten naar verschillende databases.
Maar met alleen connecten en ophalen van gegevens ben je er nog niet. Je moet ook rekening houden met de queries die je afvuurt op de database. Elke database spreekt weer zijn eigen taaltje als je wat meer geavanceerdere dingen gaat doen.

Today's subliminal thought is:


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 10:59

BierPul

2 koffie graag

Topicstarter
Daar was ik dus al bang voor, het is mij wel bekend dat er verschillende dialecten SQL zijn.

Was een mooie poging though!!

Ja man


  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Ik heb in een grijs verleden ooit eens zelf een poging gedaan om zelf een db abstractie laag te schrijven. (Heb die code helaas niet meer)

Het is prima te doen, zolang je geen exotische dingen wil doen. Dus de standaard dingen die elke DB wel ondersteund.

Had destijds ongeveer zoiets (in steno):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
class Database
{
  function setDbType($type) {... return $ok;} // 1=ODBC, 2=MySQL, etc...
  function open ($db, $user, $pw, server) {... return $ok;}
  function close() {... return $ok;}
  function execute($query) {... return $affected;}
  function query($query) {... return $handler;}
  function getRows($handler) { ... return $rows;}
  function getRow($handler) {... return $row;}
  function next($handler){... return $ok;}
  function last($handler){... return $isLast;}
  ...
  ...
}
?>

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.


  • dirkpostma
  • Registratie: Juni 2001
  • Laatst online: 10-05 16:53
Dit heet mooi gezegd: database abstraction. Zoek daarom eens bij Google op "php database abstraction".

http://www.google.com/search?q=database+abstraction+php

edit:
By the way: ik bedoel dit absoluut niet als RTFM, als komt het wel een beetje zo over. Ik wilde wel aangeven hoe je informatie over dit onderwerp kan vinden door een algemene term te geven die jou wens omschrijft.

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 10:59

BierPul

2 koffie graag

Topicstarter
By the way: ik bedoel dit absoluut niet als RTFM
Hehe dat begreep ik al aan je verhaal ...

maar bedankt voor het meedenken :D

Ja man


  • shlammod
  • Registratie: Juni 2001
  • Laatst online: 08-08 23:52

shlammod

dus.... enzo....

Om ff een voorbeeld te geven, het forum van w-Agora (niet als spam bedoeld) geeft bij de installatie procedure de mogelijkheid om uit verschillende databases te kiezen. Misschien dat je daar eens in de source kunt kijken?

it's all fun and games, 'till someone loses an eye. Then it's just fun you can't see


Verwijderd

Simpel, gebruiker de ODBC functies die te vinden zijn in PHP. (zie php.net voor uitgebreide documentatie)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Wat ik normaal gebruik is een speciale include file waarin alle functies naar een database staat.

De queries kan je ook allemaal neerzetten in een speciale functie. Waardoor dus ook al je queries gecentraliseerd staan. (en makkelijk te veranderen voor een andere database..)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 16-06 22:34
Ik gebruik nu de phpshop-core (sourceforge) en die maakt weer gebruik van de PHPlib (ook sourceforge).
Daar zitten include files bij die enigzins zoŽn "abstractie" niveau bieden (dan gebruik je dus een connect() functie en include je de bijbehorende db file ipv. zelf de connect code te schrijven).
Nu is/wordt phpshop ontikkeld op mysql en ik kreeg dus laatst te horen dat ik naar ODBC/Access moest :'( dus dacht ik: "Koekie! :Y)" Maar het ging toch niet helemaal zo soepel.
In ODBC mag je bijv. geen quotes om "numbers" heen zetten (en dat stond natuurlijk wel in phpshop code. Je hebt er dus zeker wel iets aan, maar er zijn ook dingen waar je rekening mee moet houden.
Verder gaat de PHPlib verder dan dbŽs alleen dus misschien staan er nog wel andere handige functies voor je in.

suc6

ps. Als je een andere/betere oplossing hebt hoor ik het ook graag :)

Het kan altijd mooier en beter...


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 10:59

BierPul

2 koffie graag

Topicstarter
Misschien koel ideetje voor een projectje?

Ja man


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 14 september 2001 11:41 schreef surfude het volgende:
In ODBC mag je bijv. geen quotes om "numbers" heen zetten (en dat stond natuurlijk wel in phpshop code.
Alleen prutsers zetten quotes om nummers heen, het is SQL niet HTML :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 16-06 22:34
Ho ho Dusty,

quotes om numbers hebben in MySQL een functie! Het zorgt er nl. voor een soort type-conversie waarbij alle niet-cijfers uit de betreffende string gehaald worden wanneer het in een integer veld gezet wordt (gisteren gelezen in de mysql docs, H4 als ik het goed heb).
Maar voor de compatibiliteit is het idd. niet ok :)

Verder kan je wel al je queries in een file zetten, maar dan moet je ze nog voor ieder type db nog een keer schrijven/herzien...

Het is dus zaak de queries zo compatibel (lees eenvoudig) mogelijk te houden en de functies mbv. includes abstract te maken. Of niet?
En dat gaat aardig met PHPlib of een (zelf geschreven) alternatief.

Het kan altijd mooier en beter...

Pagina: 1