5. The SQL adaptor (M2_SQL)

5.1. Sikre forespørgsler
5.2. Caching af SQL-kald

If you are using data outside the Moski2.net content repository you can access this through an SQL adaptor, and still benefit from the Moski2.net caching mechanisms.

Here is how you quickly connect to an external database:

  1. Tell your site about the external data source:

    <?php
    
    $params = array(                                                                                                        
                    'database' => 'yourdb',                                                                  
                    'user' => 'yourusername',                                                                                    
                    'pass' => 'yourpassword',                                                             
                    'engine' => 'databasetype',                                                                                      
                    'host' => 'hostname',
                    'charset' => 'iso-8859-1'                                                                                     
                    ); 
    
    M2_SQL::init($params); 
    
    ?>

    The parameters are as follows:

    database

    Navnet på din database

    user

    Brugernavn til databasen

    pass

    Kodeord til databasen

    engine

    Databasetype. Pt. er blot open-source verdenens to yndlinge understøttet:

    • mysql for MySQL

    • pgsql for PostgreSQL

    Har du brug for at tale med en Oracle-database eller andet eksotisk, så siger du bare til.

    host

    Hostnavnet hvor din database befinder sig. Har du fået en database stillet til rådighed hos Moski2.net vil denne være serveren du bor på, hvilken kan beskrives med værdien localhost.

    charset

    Tegnsæt i den database du vil snakke med. Myggen spytter indhold ud encoded i utf-8, og det vil give knas hvis din database kører med et andet tegnsæt, så du angiver dit tegnsæt her, og så klarer vi konverteringen frem og tilbage for dig, både når du læser fra og skriver til den eksterne database.

    Important

    Den automatiske konvertering mellem forskellige tegnsæt kræver at du bruger "sikre forespørgsler" som beskrevet i .Section 5.1, “Sikre forespørgsler”

    Altså kan din kode for eksempel se således ud hvis du forbinder til en MySQL-database der ligger hos Moski2.net:

    <?php
    
    $params = array(                                                                                                        
                    'database' => 'dindatabase',                                                                  
                    'user' => 'ditbrugernavn',                                                                                    
                    'pass' => 'ditkodeord',                                                             
                    'engine' => 'mysql',                                                                                      
                    'host' => 'localhost',
                    'charset' => 'iso-8859-1'                                                                                     
                    ); 
    
    M2_SQL::init($params); 
    
    ?>
  2. Now you can run your first SQL query:

    <?php
    
    $sql = 'select * from dintabel';
    
    $res = M2_SQL::query($sql);
    
    ?>

    $res will now contain an array of data, just as when you pull content with M2_Content::get().

    Du kan også give en ekstra parameter med: et array med forskellige options. Ønsker du for eksempel at ignorere en cachet version af din forespørgsel og være sikker på at du taler direkte med datbasen hver gang kan du gøre således:

    <?php
    
    $sql = 'select * from your_table';
    
    $options = array('cache' => 0);
    
    $res = M2_SQL::query($sql, $options);
    
    ?>

    Her er en liste over de parametre du kan give med - forklaring følger herunder.

    Parameter (nøgle i options-arrayet)ForklaringDefault-værdi
    cache

    Kan sættes til 0 eller 1 alt efter om du vil benytte cachen eller ej.

    1

    cacheGroup

    Her kan du angive et navn på den gruppe du vil have resultatet cachet i (læs mere herunder i Section 5.2, “Caching af SQL-kald”).

    sql

    placeholders

    Et array af værdier som skal indsættes i en sikker forespørgsel (læs mere herunder i Section 5.1, “Sikre forespørgsler”).