Your SlideShare is downloading. ×

Drupal 7 database api

4,116

Published on

Drupal 7 database API

Drupal 7 database API

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,116
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
47
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Drupal 7Database API Andriy Podanenko a.podanenko@simbioz.com.ua
  • 2. Server configurationPHP 5.0+ (5.3+ recommended)php5-pdophp5-pdo_mysqlphp5-pdo_pgsqlphp5-pdo_sqlitemysql, postgres…Apache1.3+ (or php cgi enabled web server)
  • 3. The start…php.net/pdo<?phpabstract class DatabaseConnection extends PDO…// Drupal fun…// Because the other methods dont seem to work right.$driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  • 4. Class Hierarhy abstract class DatabaseConnection extends PDO…DatabaseConnectionDatabaseConnection::select db_select (SelectQuery)DatabaseConnection::delete db_delete (DeleteQuery)DatabaseConnection::update db_update (UpdateQuery)DatabaseConnection::query db_query (DatabaseStatementInterface)DatabaseConnection::insert db_insert (InsertQuery)DatabaseConnection::merge db_merge (MergeQuery)…
  • 5. DatabaseStatementInterface• execute ($args=array(), $options=array())• fetchAllAssoc ($key, $fetch=NULL)• fetchAllKeyed ($key_index=0, $value_index=1)• fetchAssoc ()• fetchCol ($index=0)• fetchField ($index=0)• getQueryString ()• rowCount () (UPDATE, DELETE, INSERT only)
  • 6. Query interface hierarchy
  • 7. db_selectSELECT name,description FROM taxonomy_term_data AS ttdWHERE tid LIKE 79<?php //Drupal$result = db_select(taxonomy_term_data, ttd);//returned SelectQuery$ret = $result -> fields(ttd, array(name, description));//returned SelectQueryInterface$ret = $result -> condition(tid, 79, like);// returned QueryConditionInterface$ret = $result -> execute(); // returned SelectQuery object$data = $ret -> fetchAll(); // fetched data as object from database
  • 8. Other database (target)$result = db_select(taxonomy_term_data, ttd,array(target => slave));// adding other database at runtimeDatabase::addConnectionInfo(default, slave, array(database => ‘other_db,username => ‘name, password => pass,host => localhost, port => 5432,driver => pgsql));
  • 9. DatabaseTransaction (innodb,pgsql)<?phpfunction demo_transaction()$temp = db_transaction();db_update… // charging account1 +100$db_update… // charging account2 -100$db_insert… // creating log entry for thatreturn TRUE; // automatically commit (no $temp)} //
  • 10. $error->handle  try{} catch{}<?phpfunction demo_transaction()$temp = db_transaction();try {db_insert… // some ugly code here…return TRUE; }catch(Exception $e) { $temp->rollback();watchdog(‘demo error, print_r($e, TRUE)}
  • 11. logging -> DatabaseLog$demo_log = new DatabaseLog;$demo_log->start(‘some_key’);db_update…db_select…// Calling functions or any…$demo_log->end(‘some_key’);print_r($demo_log->get(‘some_key’), TRUE);// printed indexed array for all queries…
  • 12. Drupal 6 – dbtng module (backport) drupal.org/project/dbtngdbtng_* (full functions list in dbtng.module)dbtng_querydbtng_set_activedb_select• good for support old sites• multi database setup possibility for Drupal 6• preparing code for upgrade
  • 13. Useful links• api.drupal.org/api/drupal/7• drupal.org/developing/api/database• upgrade.boombatower.com/tools/sql/inline• drupal.org/project/coder• php.net/pdo• drupal.org/project/dbtng• drupal.org/node/310069
  • 14. Drupal DB api->executed();  twitter.com/podarok  facebook.com/podarok  vkontakte.ru/podarokua  a.podanenko@simbioz.com.ua  drupal.org/user/116002  drupal.ua/user/23 http://simbioz.ua

×