際際滷

際際滷Share a Scribd company logo
Drupal adatb叩zis API




油            油
T旦bb adatb叩zis t叩mogat叩sa
       Drupal油6
              MySQL:油t叩mogatott
              PostgreSQL:油core油t叩mogatja,油contribok油kev辿sb辿
              MSSQL:油a油Microsoft油nagyon油szeretn辿
              Oracle:油contribk辿nt油el辿rhet
       Drupal油7
              MySQL:油t叩mogatott
              PostgreSQL:油tesztekkel油bizony鱈tottan油t叩mogatott

油                                   油
K旦nny撤s炭ly炭 API
       Elny
              Kev辿s油visszaes辿s油teljes鱈tm辿nyben
              K旦nnyen油haszn叩lhat坦
       H叩tr叩ny
              SQL油鱈r叩sakor油nagyon油figyelni油kell油a油szintaxisra
              Csak油olyan油funkci坦kra油lehet油t叩maszkodni,油amelyek油
                mindegyik油t叩mogatott油adatb叩ziskezeln油el辿rhetek



油                                    油
Szintaxis k端l旦nbs辿g
       T叩bla油neveket油k旦rbe油kell油venni油{}足kkel
       rt辿kek油helyett油placeholderek
       P辿lda
             SELECT油name油FROM油{users}油WHERE油uid油=油%d




油                              油
F端ggv辿nyek

db_add_field, db_add_index, db_add_primary_key, db_add_unique_key,
db_affected_rows, db_change_field, db_check_setup,
db_column_exists, db_connect, db_create_table, db_create_table_sql,
db_decode_blob, db_distinct_field, db_drop_field, db_drop_index,
db_drop_primary_key, db_drop_table, db_drop_unique_key,
db_encode_blob, db_error, db_escape_string, db_escape_table,
db_fetch_array, db_fetch_object, db_field_names, db_field_set_default,
db_field_set_no_default, db_is_active, db_last_insert_id, db_lock_table,
db_placeholders, db_prefix_tables, db_query, db_query_range,
db_query_temporary, db_rename_table, db_result, db_rewrite_sql,
db_set_active, db_status_report, db_table_exists, db_type_map,
db_type_placeholder, db_unlock_tables, db_version, pager_query,
tablesort_sql, update_sql



油                                   油
永辿鉛糸叩一
       Rossz油p辿lda:
             $res油=油db_query(SELECT油*油FROM油{users}油
               WHERE油uid油=油$uid);




油                              油
永辿鉛糸叩一
       Mi油van,油ha油a油valahonnan油kapott油$uid油tartalma油a油
         k旦vetkez:
             1;油UPDATE油users油SET油pass油=油md5('iamhacked')




油                               油
Akkor油bizony油
     megt旦rtek油:(




油                   油
永辿鉛糸叩一
       Az油elz油p辿lda油helyesen
             $res油=油db_query(SELECT油*油FROM油{users}油
               WHERE油uid油=油%d,油$uid);
       Az油uid油lehet油b叩rmi,油a油%d油miatt油numerikus油辿rt辿kk辿油
         lesz油konvert叩lva.
       Az油elz油rosszindulat炭油param辿ter油eset辿n油1油lesz.




油                                 油
String
       String油haszn叩lata
             $res油=油db_query(SELECT油uid,油name油FROM油
               {users}油WHERE油name油=油'%s',油$searchstring);




油                                油
Tov叩bbi t鱈pusok
       Float
                $res油=油db_query(SELECT油*油FROM油{spec_tabla}油
                  WHERE油valami_mezo油>油%F,油$float_ertek);




油                                 油
Tov叩bbi t鱈pusok
       Bin叩ris
             $res油=油db_query(UPDATE油{spec_tabla}油SET油
               valami_adat油=油%b油WHERE油id油=油%d,油
               $binaris_adat,油$id);




油                              油
A % escape-el辿se

    %%


    db_query('SELECT油nid油FROM油{node}油WHERE油
      title油LIKE油'%%%s%%'油ORDER油BY油nid油DESC',油
      $searchstring);




油                       油
V叩ltoz坦 sz叩m炭 辿rt辿k

    $data油=油array(1,油2,油3);
    db_query('SELECT油foo油FROM油{bar}油WHERE油
      client_id油IN油('油.油db_placeholders($data,油'int')油.油')油
      ORDER油BY油client_id',油$data);




油                             油
T叩bla nevek

    db_escape_table()


    db_query('SELECT油*油FROM油{'油.油
      db_escape_table($table)油.油'}');




油                           油
Schema API




油            油
Schema API
       Automatikus油adatb叩ziss辿ma油gener叩l叩s
              Biztosan油adatb叩zisf端ggetlen油lesz油a油k坦d,油amit油gener叩l
              K旦nnyebb油karbantartani
              K旦nnyen油lehet油csak油egyes油r辿szeket油felhaszn叩lni




油                                   油
hook_schema()
       Haszn叩lat油(.install):
             mymodule_schema()油{
                     $schema油=油array(...);
                     return油$schema;
             }
             mymodule_install()油{
                     drupal_install_schema('mymodule');
             }
             mymodule_uninstall()油{
                     drupal_uninstall_schema('mymodule');
             }
油                                       油
Schema t旦mb


array(
  'tablaneve' => array(
    'fields' => $fields,
    'indexes' => $indexes,
    'unique keys' => $unique_keys,
    'primary key' => $primary_key,
  ),
);


油                        油
Mezk
array(
  'mezoneve' => array(
    'type' => $tipus,
    'unsigned' => TRUE, // csak numerikus t鱈pussal
    'not null' => TRUE,
    'length' => $hossz, // nem minden t鱈pusn叩l
    'default' => $alapertek, // nem k旦telez
    'size' => $hossz, // adatt鱈pus hossza (nem k旦telez),
     'precision' => $p, // csak numerikus mezkn辿l
    'scale' => $s, // csak numerikus mezkn辿l
    'serialize' => FALSE,
  ),
);
油                            油
意鱈沿顎壊看一
       serial油(pg:油automatikus油sequence,油mysql:油auto_increment)
       int
       float
       numeric
       varchar
       char
       text
       blob
       datetime
油                                    油
或沿界庄坦一
       size:油az油adatt鱈pus油m辿rete油('tiny',油'small',油'medium',油
          'normal',油'big'),油l叩sd:油Adatt鱈pusok油辿s油m辿reteik
       not油null:油NULL油辿rt辿k油enged辿lyez辿se
       default:油alap辿rtelmezett油辿rt辿k
       length:油hossz油a油k旦vetkez油t鱈pusokn叩l:油'varchar',油
          'text',油'int'
       unsigned:油'int',油'float',油'numeric'油辿rt辿kekn辿l油辿rv辿nyes,油
          alap辿rtelmezett:油FALSE

油                                 油
或沿界庄坦一
       precision,油scale:油a油'numeric'油t鱈pusn叩l油a油pontoss叩g油
          (szignifik叩ns油bitek油sz叩ma)
       serialize:油boolean油辿rt辿k,油hogy油a油t叩rolt油adat油
          szerializ叩lt油sztring足e




油                                油
Kulcsok megad叩sa
       unique油keys,油indexes:
             array(
                      'kulcs0'油=>油array('mezo0',油'mezo1'),
                      'kulcs1'油=>油array('mezo3'),
             )
       primary油key
             array(油'mezo0',油'mezo1'油)




油                                       油
API

       db_add_field, db_add_index, db_add_primary_key,
    db_add_unique_key, db_change_field, db_create_table,
      db_create_table_sql, db_drop_field, db_drop_index,
             db_drop_primary_key, db_drop_table,
             db_drop_unique_key, db_field_names,
         db_field_set_default, db_field_set_no_default,
    db_rename_table, db_type_map, db_type_placeholder,
    drupal_get_schema, drupal_get_schema_unprocessed,
       drupal_install_schema, drupal_schema_fields_sql,
         drupal_uninstall_schema, drupal_write_record,
            _db_create_field_sql, _db_process_field,
                   _drupal_initialize_schema

油                             油
意叩恢鉛温韓姻庄壊壊鱈岳辿壊
       function油mymodule_update_6001()油{
            $ret油=油array();
            db_add_field($ret,油'mytable1',油'newcol',油array('type'油=>油'int',油
              'not油null'油=>油TRUE));
            $schema['mytable2']油=油array(...);
            db_create_table($ret,油'mytable2',油$schema['mytable2']);
            db_add_unique_key($ret,油'mytable2',油'mykey',油array('field1',油
              'field2'));
            return油$ret;
        }
油                                      油
Tov叩bbi tudnival坦k
       Primary油key油nem油lehet油NULL
       NOT油NULL油ut坦lagos油hozz叩ad叩sa,油alap辿rtelmezett油
         辿rt辿k油n辿lk端l:
             $ret油=油array();
             db_add_field($ret,油'mytable0',油'col1',油array('type'油=>油
               'text',油'not油null'油=>油TRUE,油'initial'油=>油'start'));




油                                  油
意鱈沿顎壊看一
       Field type     PHP types                  Correct          Incorrect
    int             integer       0, 3, 17                 0.5, '0'
    float           float         7, 5.75                  1.24'
    numeric         float         3.14                     2.17'
    datetime        string         '2007-08-26 13:00:00'   Unix timestamp
    varchar         string         '', 'hi mom'            0, 3.14
    text            N/A           none
    serial          N/A           none
    blob            N/A           none




油                                            油
JOIN
       A油direktszorzat油nem油hat辿kony
              3油t叩bla,油1油milli坦,油f辿l油milli坦油辿s油50油milli坦油rekorddal
       Hat辿kony油(polinom油idej撤油辿s油mem坦riaig辿ny撤)油
         megold叩s:油JOIN




油                                     油
JOIN
       (INNER)油JOIN
             SELECT油*油FROM油foo油JOIN油bar油ON油foo.fid油=油bar.fid
             SELECT油*油FROM油foo油JOIN油bar油USING油(fid)
       LEFT,油RIGHT油(OUTER)油JOIN
             SELECT油*油FROM油foo油LEFT油JOIN油bar油ON油foo.fid油=油
              bar.fid
       NATURAL油JOIN
             SELECT油*油FROM油foo油NATURAL油JOIN油bar
       http://en.wikipedia.org/wiki/Join_(SQL)
油                               油
Kompatibilis SQL
       T叩blan辿v油k旦r辿油油`油helyett
       String油k旦r辿油szigor炭an油'
       Adatt旦rl辿s油egyszerre油egy油t叩bl叩b坦l
       MySQL足n辿l油az油int油辿s油a油boolean油ugyanaz,油
         Postgres足n辿l油nem!




油                             油
Kompatibilis SQL
       Ker端lni:
              IGNORE
              REPLACE
              ON油DUPLICATE油KEY
       CONCAT()油csak油k辿t油argumentummal
       Minden油nem油aggreg叩lt油meznek油szerepelnie油kell油a油
         GROUP油BY油ut叩n
       http://drupal.org/node/555514油

油                              油
K辿rd辿sek




油          油

More Related Content

Drupal 6 Database layer

  • 2. T旦bb adatb叩zis t叩mogat叩sa Drupal油6 MySQL:油t叩mogatott PostgreSQL:油core油t叩mogatja,油contribok油kev辿sb辿 MSSQL:油a油Microsoft油nagyon油szeretn辿 Oracle:油contribk辿nt油el辿rhet Drupal油7 MySQL:油t叩mogatott PostgreSQL:油tesztekkel油bizony鱈tottan油t叩mogatott 油 油
  • 3. K旦nny撤s炭ly炭 API Elny Kev辿s油visszaes辿s油teljes鱈tm辿nyben K旦nnyen油haszn叩lhat坦 H叩tr叩ny SQL油鱈r叩sakor油nagyon油figyelni油kell油a油szintaxisra Csak油olyan油funkci坦kra油lehet油t叩maszkodni,油amelyek油 mindegyik油t叩mogatott油adatb叩ziskezeln油el辿rhetek 油 油
  • 4. Szintaxis k端l旦nbs辿g T叩bla油neveket油k旦rbe油kell油venni油{}足kkel rt辿kek油helyett油placeholderek P辿lda SELECT油name油FROM油{users}油WHERE油uid油=油%d 油 油
  • 5. F端ggv辿nyek db_add_field, db_add_index, db_add_primary_key, db_add_unique_key, db_affected_rows, db_change_field, db_check_setup, db_column_exists, db_connect, db_create_table, db_create_table_sql, db_decode_blob, db_distinct_field, db_drop_field, db_drop_index, db_drop_primary_key, db_drop_table, db_drop_unique_key, db_encode_blob, db_error, db_escape_string, db_escape_table, db_fetch_array, db_fetch_object, db_field_names, db_field_set_default, db_field_set_no_default, db_is_active, db_last_insert_id, db_lock_table, db_placeholders, db_prefix_tables, db_query, db_query_range, db_query_temporary, db_rename_table, db_result, db_rewrite_sql, db_set_active, db_status_report, db_table_exists, db_type_map, db_type_placeholder, db_unlock_tables, db_version, pager_query, tablesort_sql, update_sql 油 油
  • 6. 永辿鉛糸叩一 Rossz油p辿lda: $res油=油db_query(SELECT油*油FROM油{users}油 WHERE油uid油=油$uid); 油 油
  • 7. 永辿鉛糸叩一 Mi油van,油ha油a油valahonnan油kapott油$uid油tartalma油a油 k旦vetkez: 1;油UPDATE油users油SET油pass油=油md5('iamhacked') 油 油
  • 8. Akkor油bizony油 megt旦rtek油:( 油 油
  • 9. 永辿鉛糸叩一 Az油elz油p辿lda油helyesen $res油=油db_query(SELECT油*油FROM油{users}油 WHERE油uid油=油%d,油$uid); Az油uid油lehet油b叩rmi,油a油%d油miatt油numerikus油辿rt辿kk辿油 lesz油konvert叩lva. Az油elz油rosszindulat炭油param辿ter油eset辿n油1油lesz. 油 油
  • 10. String String油haszn叩lata $res油=油db_query(SELECT油uid,油name油FROM油 {users}油WHERE油name油=油'%s',油$searchstring); 油 油
  • 11. Tov叩bbi t鱈pusok Float $res油=油db_query(SELECT油*油FROM油{spec_tabla}油 WHERE油valami_mezo油>油%F,油$float_ertek); 油 油
  • 12. Tov叩bbi t鱈pusok Bin叩ris $res油=油db_query(UPDATE油{spec_tabla}油SET油 valami_adat油=油%b油WHERE油id油=油%d,油 $binaris_adat,油$id); 油 油
  • 13. A % escape-el辿se %% db_query('SELECT油nid油FROM油{node}油WHERE油 title油LIKE油'%%%s%%'油ORDER油BY油nid油DESC',油 $searchstring); 油 油
  • 14. V叩ltoz坦 sz叩m炭 辿rt辿k $data油=油array(1,油2,油3); db_query('SELECT油foo油FROM油{bar}油WHERE油 client_id油IN油('油.油db_placeholders($data,油'int')油.油')油 ORDER油BY油client_id',油$data); 油 油
  • 15. T叩bla nevek db_escape_table() db_query('SELECT油*油FROM油{'油.油 db_escape_table($table)油.油'}'); 油 油
  • 17. Schema API Automatikus油adatb叩ziss辿ma油gener叩l叩s Biztosan油adatb叩zisf端ggetlen油lesz油a油k坦d,油amit油gener叩l K旦nnyebb油karbantartani K旦nnyen油lehet油csak油egyes油r辿szeket油felhaszn叩lni 油 油
  • 18. hook_schema() Haszn叩lat油(.install): mymodule_schema()油{ $schema油=油array(...); return油$schema; } mymodule_install()油{ drupal_install_schema('mymodule'); } mymodule_uninstall()油{ drupal_uninstall_schema('mymodule'); } 油 油
  • 19. Schema t旦mb array( 'tablaneve' => array( 'fields' => $fields, 'indexes' => $indexes, 'unique keys' => $unique_keys, 'primary key' => $primary_key, ), ); 油 油
  • 20. Mezk array( 'mezoneve' => array( 'type' => $tipus, 'unsigned' => TRUE, // csak numerikus t鱈pussal 'not null' => TRUE, 'length' => $hossz, // nem minden t鱈pusn叩l 'default' => $alapertek, // nem k旦telez 'size' => $hossz, // adatt鱈pus hossza (nem k旦telez), 'precision' => $p, // csak numerikus mezkn辿l 'scale' => $s, // csak numerikus mezkn辿l 'serialize' => FALSE, ), ); 油 油
  • 21. 意鱈沿顎壊看一 serial油(pg:油automatikus油sequence,油mysql:油auto_increment) int float numeric varchar char text blob datetime 油 油
  • 22. 或沿界庄坦一 size:油az油adatt鱈pus油m辿rete油('tiny',油'small',油'medium',油 'normal',油'big'),油l叩sd:油Adatt鱈pusok油辿s油m辿reteik not油null:油NULL油辿rt辿k油enged辿lyez辿se default:油alap辿rtelmezett油辿rt辿k length:油hossz油a油k旦vetkez油t鱈pusokn叩l:油'varchar',油 'text',油'int' unsigned:油'int',油'float',油'numeric'油辿rt辿kekn辿l油辿rv辿nyes,油 alap辿rtelmezett:油FALSE 油 油
  • 23. 或沿界庄坦一 precision,油scale:油a油'numeric'油t鱈pusn叩l油a油pontoss叩g油 (szignifik叩ns油bitek油sz叩ma) serialize:油boolean油辿rt辿k,油hogy油a油t叩rolt油adat油 szerializ叩lt油sztring足e 油 油
  • 24. Kulcsok megad叩sa unique油keys,油indexes: array( 'kulcs0'油=>油array('mezo0',油'mezo1'), 'kulcs1'油=>油array('mezo3'), ) primary油key array(油'mezo0',油'mezo1'油) 油 油
  • 25. API db_add_field, db_add_index, db_add_primary_key, db_add_unique_key, db_change_field, db_create_table, db_create_table_sql, db_drop_field, db_drop_index, db_drop_primary_key, db_drop_table, db_drop_unique_key, db_field_names, db_field_set_default, db_field_set_no_default, db_rename_table, db_type_map, db_type_placeholder, drupal_get_schema, drupal_get_schema_unprocessed, drupal_install_schema, drupal_schema_fields_sql, drupal_uninstall_schema, drupal_write_record, _db_create_field_sql, _db_process_field, _drupal_initialize_schema 油 油
  • 26. 意叩恢鉛温韓姻庄壊壊鱈岳辿壊 function油mymodule_update_6001()油{ $ret油=油array(); db_add_field($ret,油'mytable1',油'newcol',油array('type'油=>油'int',油 'not油null'油=>油TRUE)); $schema['mytable2']油=油array(...); db_create_table($ret,油'mytable2',油$schema['mytable2']); db_add_unique_key($ret,油'mytable2',油'mykey',油array('field1',油 'field2')); return油$ret; } 油 油
  • 27. Tov叩bbi tudnival坦k Primary油key油nem油lehet油NULL NOT油NULL油ut坦lagos油hozz叩ad叩sa,油alap辿rtelmezett油 辿rt辿k油n辿lk端l: $ret油=油array(); db_add_field($ret,油'mytable0',油'col1',油array('type'油=>油 'text',油'not油null'油=>油TRUE,油'initial'油=>油'start')); 油 油
  • 28. 意鱈沿顎壊看一 Field type PHP types Correct Incorrect int integer 0, 3, 17 0.5, '0' float float 7, 5.75 1.24' numeric float 3.14 2.17' datetime string '2007-08-26 13:00:00' Unix timestamp varchar string '', 'hi mom' 0, 3.14 text N/A none serial N/A none blob N/A none 油 油
  • 29. JOIN A油direktszorzat油nem油hat辿kony 3油t叩bla,油1油milli坦,油f辿l油milli坦油辿s油50油milli坦油rekorddal Hat辿kony油(polinom油idej撤油辿s油mem坦riaig辿ny撤)油 megold叩s:油JOIN 油 油
  • 30. JOIN (INNER)油JOIN SELECT油*油FROM油foo油JOIN油bar油ON油foo.fid油=油bar.fid SELECT油*油FROM油foo油JOIN油bar油USING油(fid) LEFT,油RIGHT油(OUTER)油JOIN SELECT油*油FROM油foo油LEFT油JOIN油bar油ON油foo.fid油=油 bar.fid NATURAL油JOIN SELECT油*油FROM油foo油NATURAL油JOIN油bar http://en.wikipedia.org/wiki/Join_(SQL) 油 油
  • 31. Kompatibilis SQL T叩blan辿v油k旦r辿油油`油helyett String油k旦r辿油szigor炭an油' Adatt旦rl辿s油egyszerre油egy油t叩bl叩b坦l MySQL足n辿l油az油int油辿s油a油boolean油ugyanaz,油 Postgres足n辿l油nem! 油 油
  • 32. Kompatibilis SQL Ker端lni: IGNORE REPLACE ON油DUPLICATE油KEY CONCAT()油csak油k辿t油argumentummal Minden油nem油aggreg叩lt油meznek油szerepelnie油kell油a油 GROUP油BY油ut叩n http://drupal.org/node/555514油 油 油