Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
Upcoming SlideShare
Loading in...5
×
 

Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011

on

  • 1,903 views

 

Statistics

Views

Total Views
1,903
Views on SlideShare
840
Embed Views
1,063

Actions

Likes
0
Downloads
11
Comments
0

3 Embeds 1,063

http://camp11.drupal.ua 1060
url_unknown 2
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011 Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011 Presentation Transcript

    • Drupal 7Database API Andriy Podanenko a.podanenko@simbioz.com.ua
    • Gold Sponsor ofDrupalCamp Kyiv 2011
    • Silver Sponsors ofDrupalCamp Kyiv 2011
    • Server configurationPHP 5.0+ (5.3+ recommended)php5-pdophp5-pdo_mysqlphp5-pdo_pgsqlphp5-pdo_sqlitemysql, postgres…Apache1.3+ (or php cgi enabled web server)
    • The start…php.net/pdo<?phpabstract class DatabaseConnection extendsPDO…// Drupal fun…// Because the other methods dont seem to work right.$driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    • 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)…
    • 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)
    • Query interface hierarchy
    • 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
    • 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));
    • 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)} //
    • $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)}
    • 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…
    • Drupal 6 – dbtng module (backport) drupal.org/project/dbtng dbtng_* (full functions list in dbtng.module) dbtng_query dbtng_set_active db_select • good for support old sites • multi database setup possibility for Drupal 6 • preparing code for upgrade
    • 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
    • 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