[php] Korte vraagjes over adodb

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 20-09 16:56

xces

To got or not to got..

Topicstarter
Sinds een jaar ben ik bezig met de ADODB library, en met succes moet ik zeggen. Aangezien er bij Adodb meerdere manieren zijn om bepaalde zaken te regelen wilde ik mijn code eens gaan doornemen die ik het afgelopen jaar gemaakt heb.

Vraag 1: Hoe kun je het snelste/beste/veiligste met een database werken (met welke functies) rekening houdend met quotes.
a) door iedere SQL als string te maken met behulp van ADODB's qstr functie?
b) Door gebruik te maken van binding en het Execute statement. Er staat namelijk in de handleiding "Note that you do not have to quote strings if you use binding." Betekend dit dat het Execute statement het quoten voor je regelt als je bindings gebruikt?

Vraag 2: Een insert en update statement kun je zelfs op 3 manieren doen, wat zou de snelste/beste/veiligste zijn?
a) door de SQL als string te maken met behulp van ADODB's qstr functie?
b) door het gebruik van parameters (zie code verderop)
c) door het gebruik van GetUpdateSQL / GetInsertSQL

PHP:
1
2
3
4
5
...
$sql = "INSERT INTO gebruikers (familienaam, voornaam) VALUES (?, ?)";
$params = array($_POST['familienaam'], $_POST['voornaam']);
$rs = $db->Execute($sql, params);
...


Ik hoop dat het duidelijk is!

Acties:
  • 0 Henk 'm!

  • robbert_nl
  • Registratie: Oktober 2000
  • Laatst online: 27-04-2021
Het snelste/beste/veiligste werken met een database doe je door views en stored procedures te gebruiken. Views en stored procedures zijn gecompileerd, dus de SQL statements worden veel sneller uitgevoerd. Daarnaast zijn ze veiliger omdat ze directe toegang tot je tabellen afschermen. Echter, gezien het feit dat je php gebruikt, verwacht ik niet dat je een DBMS hebt dat dit ondersteunt.

In dat geval zal je dus je SQL statements aan ADODB mee moeten geven, waarbij het gebruik van parameters altijd de voorkeur heeft.

Daarnaast maakt het voor een SELECT query zeker uit hoe je de resultaten ophaalt. Een lus met daarin een statement om row voor row op te halen zal vele malen meer kosten dan de gehele recordset ophalen als array, je verbinding met database sluiten en dan vervolgens het array doorlopen. In ASP heet de functie GetRows() ik denk dat voor PHP GetArray() het alternatief is. Anders even zoeken in de PHP manuals. Succes!