SlideShare a Scribd company logo
Drupal 7
Database API

 Andriy Podanenko
  a.podanenko@simbioz.com.ua
Gold Sponsor of
DrupalCamp Kyiv 2011
Silver Sponsors of
DrupalCamp Kyiv 2011
Server configuration

PHP 5.0+ (5.3+ recommended)
php5-pdo
php5-pdo_mysql
php5-pdo_pgsql
php5-pdo_sqlite
mysql, postgres…
Apache1.3+ (or php cgi enabled web server)
The start…

php.net/pdo
<?php
abstract class DatabaseConnection extends
PDO
…

// Drupal fun…
// Because the other methods don't seem to work right.
$driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
Class Hierarhy
    abstract class DatabaseConnection extends PDO…




DatabaseConnection
DatabaseConnection::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_select
SELECT name,description FROM taxonomy_term_data AS ttd
WHERE 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 runtime
Database::addConnectionInfo('default', 'slave',
array(
 'database' => ‘other_db',
 'username' => ‘name', 'password' => 'pass',
 'host' => 'localhost', 'port' => '5432',
 'driver' => 'pgsql'));
DatabaseTransaction
            (innodb,pgsql)
<?php
function demo_transaction()
$temp = db_transaction();
db_update… // charging account1 +100$
db_update… // charging account2 -100$
db_insert… // creating log entry for that
return TRUE; // automatically commit (no $temp)
} //
$error->handle  try{} catch{}

<?php
function 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

More Related Content

What's hot (20)

PDF
Upgrade your javascript to drupal 8
Théodore Biadala
 
ODP
Postgresql Federation
Jim Mlodgenski
 
PDF
Large Scale Crawling with Apache Nutch and Friends
lucenerevolution
 
ODP
Web scraping with nutch solr part 2
Mike Frampton
 
PPTX
Exported resources design patterns
Yevgeny Trachtinov
 
PDF
Building data flows with Celery and SQLAlchemy
Roger Barnes
 
PPTX
Hawq Hcatalog Integration
Shivram Mani
 
PPTX
HCatalog Hadoop Summit 2011
Hortonworks
 
PDF
Hive
Vetri V
 
PDF
Friends of Solr - Nutch & HDFS
Saumitra Srivastav
 
PPT
8b. Column Oriented Databases Lab
Fabio Fumarola
 
PPTX
Introduction to apache nutch
Sigmoid
 
ODP
MongoDB & PHP
Sanjeev Shrestha
 
PPT
8a. How To Setup HBase with Docker
Fabio Fumarola
 
PDF
Geodaten & Drupal 7
Michael Milz
 
PDF
Boosting MongoDB performance
Alexei Panin
 
PDF
Hbase
Vetri V
 
PPTX
Hive hcatalog
Alexandre Poletto
 
PDF
May 2013 HUG: HCatalog/Hive Data Out
Yahoo Developer Network
 
KEY
An introduction to CouchDB
David Coallier
 
Upgrade your javascript to drupal 8
Théodore Biadala
 
Postgresql Federation
Jim Mlodgenski
 
Large Scale Crawling with Apache Nutch and Friends
lucenerevolution
 
Web scraping with nutch solr part 2
Mike Frampton
 
Exported resources design patterns
Yevgeny Trachtinov
 
Building data flows with Celery and SQLAlchemy
Roger Barnes
 
Hawq Hcatalog Integration
Shivram Mani
 
HCatalog Hadoop Summit 2011
Hortonworks
 
Hive
Vetri V
 
Friends of Solr - Nutch & HDFS
Saumitra Srivastav
 
8b. Column Oriented Databases Lab
Fabio Fumarola
 
Introduction to apache nutch
Sigmoid
 
MongoDB & PHP
Sanjeev Shrestha
 
8a. How To Setup HBase with Docker
Fabio Fumarola
 
Geodaten & Drupal 7
Michael Milz
 
Boosting MongoDB performance
Alexei Panin
 
Hbase
Vetri V
 
Hive hcatalog
Alexandre Poletto
 
May 2013 HUG: HCatalog/Hive Data Out
Yahoo Developer Network
 
An introduction to CouchDB
David Coallier
 

Viewers also liked (20)

PDF
Ubercart7 views catalog ru
Andrii Podanenko
 
PDF
Feeds drupal cafe
Andrii Podanenko
 
PDF
Drupal Optimization
Andrii Podanenko
 
PPTX
Drupal 8 configuration development flow
Andrii Podanenko
 
PDF
Drupal codesprint kyiv drupal cafe 07.02.2013
Andrii Podanenko
 
PDF
Docker SQL Continuous Integration Flow
Andrii Podanenko
 
PDF
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Drupal 8 what to wait from
Andrii Podanenko
 
PDF
Do + ldo for developers(full)
Andrii Podanenko
 
PDF
Getting started with Ansible. Be efficient.
Alex S
 
PDF
Getting Started with DrupalGap
Alex S
 
PDF
Drupal and diversity of Single sign-on systems
Alex S
 
PDF
Drupal contrib module maintaining
Andrii Podanenko
 
PDF
Live deployment, ci, drupal
Andrii Podanenko
 
PDF
Build your application in seconds and optimize workflow as much as you can us...
Alex S
 
PDF
Start using vagrant now!
Andrii Podanenko
 
PPTX
Drupal Continuous Integration Workflow
Andrii Podanenko
 
PPTX
природна і економна дорожня карта для переходу команди розробки на тест центр...
Andrii Podanenko
 
ODP
Історія, теорія та використання CMS Drupal
Igor Bronovskyy
 
PDF
Drupal 8 DevOps . Profile and SQL flows.
Andrii Podanenko
 
Ubercart7 views catalog ru
Andrii Podanenko
 
Feeds drupal cafe
Andrii Podanenko
 
Drupal Optimization
Andrii Podanenko
 
Drupal 8 configuration development flow
Andrii Podanenko
 
Drupal codesprint kyiv drupal cafe 07.02.2013
Andrii Podanenko
 
Docker SQL Continuous Integration Flow
Andrii Podanenko
 
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Drupal 8 what to wait from
Andrii Podanenko
 
Do + ldo for developers(full)
Andrii Podanenko
 
Getting started with Ansible. Be efficient.
Alex S
 
Getting Started with DrupalGap
Alex S
 
Drupal and diversity of Single sign-on systems
Alex S
 
Drupal contrib module maintaining
Andrii Podanenko
 
Live deployment, ci, drupal
Andrii Podanenko
 
Build your application in seconds and optimize workflow as much as you can us...
Alex S
 
Start using vagrant now!
Andrii Podanenko
 
Drupal Continuous Integration Workflow
Andrii Podanenko
 
природна і економна дорожня карта для переходу команди розробки на тест центр...
Andrii Podanenko
 
Історія, теорія та використання CMS Drupal
Igor Bronovskyy
 
Drupal 8 DevOps . Profile and SQL flows.
Andrii Podanenko
 
Ad

Similar to Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011 (20)

PDF
Drupal 7 database api
Andrii Podanenko
 
PPTX
Drupal 8 migrate!
Pavel Makhrinsky
 
ZIP
What's new in the Drupal 7 API?
Alexandru Badiu
 
PDF
13th Sep, Drupal 7 advanced training by TCS
DrupalMumbai
 
PDF
Drupal 7 Theming - Behind the scenes
ramakesavan
 
PDF
Drupal Module Development
ipsitamishra
 
PDF
Drupal Module Development - OSI Days 2010
Siva Epari
 
PDF
Staying Sane with Drupal NEPHP
Oscar Merida
 
PPTX
Drupal Camp Porto - Developing with Drupal: First Steps
Luís Carneiro
 
PDF
Scaling in Mind (Case study of Drupal Core)
jimyhuang
 
PPTX
Migrate in Drupal 8
Alexei Gorobets
 
ODP
Zend Framework 1.9 Setup & Using Zend_Tool
Gordon Forsythe
 
PDF
Intro to drupal_7_architecture
Hai Vo Hoang
 
PDF
Tools and Tips for Moodle Developers - #mootus16
Dan Poltawski
 
PDF
Drupal 8 - Core and API Changes
Shabir Ahmad
 
PPTX
Automating Drupal Migrations
littleMAS
 
ODP
Drupal Best Practices
manugoel2003
 
PPT
Introducing PHP Data Objects
webhostingguy
 
ODP
Drupal Theme Development - DrupalCon Chicago 2011
Ryan Price
 
PDF
Drupal 8 Services
Philip Norton
 
Drupal 7 database api
Andrii Podanenko
 
Drupal 8 migrate!
Pavel Makhrinsky
 
What's new in the Drupal 7 API?
Alexandru Badiu
 
13th Sep, Drupal 7 advanced training by TCS
DrupalMumbai
 
Drupal 7 Theming - Behind the scenes
ramakesavan
 
Drupal Module Development
ipsitamishra
 
Drupal Module Development - OSI Days 2010
Siva Epari
 
Staying Sane with Drupal NEPHP
Oscar Merida
 
Drupal Camp Porto - Developing with Drupal: First Steps
Luís Carneiro
 
Scaling in Mind (Case study of Drupal Core)
jimyhuang
 
Migrate in Drupal 8
Alexei Gorobets
 
Zend Framework 1.9 Setup & Using Zend_Tool
Gordon Forsythe
 
Intro to drupal_7_architecture
Hai Vo Hoang
 
Tools and Tips for Moodle Developers - #mootus16
Dan Poltawski
 
Drupal 8 - Core and API Changes
Shabir Ahmad
 
Automating Drupal Migrations
littleMAS
 
Drupal Best Practices
manugoel2003
 
Introducing PHP Data Objects
webhostingguy
 
Drupal Theme Development - DrupalCon Chicago 2011
Ryan Price
 
Drupal 8 Services
Philip Norton
 
Ad

More from camp_drupal_ua (20)

ODP
Peter Lozovitsky.Money under your feet or why you have not already training i...
camp_drupal_ua
 
PDF
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
camp_drupal_ua
 
PDF
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011
camp_drupal_ua
 
PDF
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...
camp_drupal_ua
 
PDF
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011
camp_drupal_ua
 
PDF
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011
camp_drupal_ua
 
PDF
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Pankov Artem.Improving drupal performance www.hr portal.ru.DrupalCamp Kyiv 2011
camp_drupal_ua
 
PDF
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Peter Lozovitsky.Money under your feet or why you have not already training i...
camp_drupal_ua
 
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
camp_drupal_ua
 
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011
camp_drupal_ua
 
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...
camp_drupal_ua
 
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011
camp_drupal_ua
 
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011
camp_drupal_ua
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Pankov Artem.Improving drupal performance www.hr portal.ru.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011
camp_drupal_ua
 

Recently uploaded (20)

PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 

Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011

  • 4. Server configuration PHP 5.0+ (5.3+ recommended) php5-pdo php5-pdo_mysql php5-pdo_pgsql php5-pdo_sqlite mysql, postgres… Apache1.3+ (or php cgi enabled web server)
  • 5. The start… php.net/pdo <?php abstract class DatabaseConnection extends PDO … // Drupal fun… // Because the other methods don't seem to work right. $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  • 6. Class Hierarhy abstract class DatabaseConnection extends PDO… DatabaseConnection DatabaseConnection::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) …
  • 7. 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)
  • 9. db_select SELECT name,description FROM taxonomy_term_data AS ttd WHERE 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
  • 10. Other database (target) $result = db_select('taxonomy_term_data', 'ttd', array('target' => 'slave')); // adding other database at runtime Database::addConnectionInfo('default', 'slave', array( 'database' => ‘other_db', 'username' => ‘name', 'password' => 'pass', 'host' => 'localhost', 'port' => '5432', 'driver' => 'pgsql'));
  • 11. DatabaseTransaction (innodb,pgsql) <?php function demo_transaction() $temp = db_transaction(); db_update… // charging account1 +100$ db_update… // charging account2 -100$ db_insert… // creating log entry for that return TRUE; // automatically commit (no $temp) } //
  • 12. $error->handle  try{} catch{} <?php function 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)}
  • 13. 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…
  • 14. 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
  • 15. 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
  • 16. Drupal DB api->executed();  twitter.com/podarok  facebook.com/podarok  vkontakte.ru/podarokua  [email protected]  drupal.org/user/116002  drupal.ua/user/23 http://simbioz.ua