HTML

View Péter Király's profile on LinkedIn

20 éves a MEK, 10 éves az EPA Én is
MEK önkéntes
vagyok

20 éves a MEK
10 éves az EPA

kirunews

Király Péter, keresés, Lucene, Solr, Java, Perl, PHP, OAI-PMH, webfejlesztés, digitális könyvtár, MARC, FRBR, RDA, Drupal, EAD, EAC, Europeana, eXtensibleCatalog.org, MEK, és sok minden más.

Friss topikok

Linkblog

Drupal API tanulás - 02 - database abstraction layer

2008.08.14. 17:55 kirunews

DB beállítás a sites/default/settings.php fájlban:

$db_url = 'mysql://username:password@localhost/databasename';Néhány lekérdezés (CRUD):

db_query('SELECT * FROM {joke} WHERE vid = %d', $node->vid);
db_query("INSERT INTO {joke} (nid, vid, punchline) VALUES
    (%d, %d, '%s')", $node->nid, $node->vid, $node->punchline);
db_query("UPDATE {joke} SET punchline = '%s' WHERE vid = %d",
    $node->punchline, $node->vid);
db_query('DELETE FROM {joke} WHERE nid = %d', $node->nid);

Helyettesítők:

%s - String
%d - Integer
%f - Float
%b - Binary data; do not enclose in ' '
%% - % jel
Egyszerű érték lekérdezése:

$sql = "SELECT COUNT(*) FROM {node} WHERE type = 'blog'
        AND status = 1";
$total = db_result(db_query($sql));
Sorok lekérdezése:

$sql = "SELECT * FROM {node} WHERE type = 'blog' AND status=1";
$result = db_query(db_rewrite_sql($sql));
while ($data = db_fetch_object($result)) {
   $node = node_load($data->nid);
   print node_view($node, TRUE);
}
Limit:

$sql = "SELECT * FROM {node} n WHERE type = 'blog' 
        AND status = 1 ORDER BY n.created DESC";
$result = db_query_range(db_rewrite_sql($sql), 0, 10);
Dinamikus paraméterezés:

$type = 'blog';
$status = 1;
$sql = "SELECT * FROM {node} n WHERE type = '%s' AND status = %d
        ORDER BY n.created DESC";
$result = db_query_range(
              db_rewrite_sql($sql), $type, $status, 0, 10
);
Lapozás (nem az API része):

$sql = "SELECT * FROM {node} n WHERE type = 'blog'
        AND status = 1 ORDER BY n.created DESC";
$result = pager_query(db_rewrite_sql($sql), 0, 10);
while ($data = db_fetch_object($result)) {
    $node = node_load($data->nid);
    print node_view($node, TRUE);
}
// Add links to remaining pages of results.
print theme('pager', NULL, 10);
Több adatbázis használata:

$db_url['default'] = 'mysql://user:password@localhost/drupal5';
$db_url['legacy']  = 'mysql://user:password@localhost/legacydb';
...
db_set_active('legacy');
$result = db_query("SELECT * FROM ldap_user WHERE uid = %d",
                    $user->uid);
// Switch back to the default connection when finished.
db_set_active('default');
Adatbázis séma updateje. Az .install fájlban:

function book_update_1() {
  $items = array();
  $items[] = update_sql("ALTER TABLE {book}
    ADD COLUMN rank int_unsigned NOT NULL default '0'");
}

(Az első update az _1-es, a második a_2-es, stb. A számot a system tábla tárolja.)

Uninstall. Az .install fájlban:

function annotate_uninstall() {
  db_query("DROP TABLE {annotations}");
  variable_del('annotate_nodetypes');
}
API függvények:

_db_query($query, $debug = 0)
db_affected_rows()
db_connect($url)
db_decode_blob($data)
db_distinct_field($table, $field, $query)
db_encode_blob($data)
db_error()
db_escape_string($text)
db_fetch_array($result)
db_fetch_object($result)
db_lock_table($table)
db_next_id($name)
db_num_rows($result)
db_query_range($query)
db_query_temporary($query)
db_result($result, $row = 0)
db_status_report($phase)
db_table_exists($table)
db_unlock_tables()
db_version()

Szólj hozzá!

A bejegyzés trackback címe:

https://kirunews.blog.hu/api/trackback/id/tr3616057

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.