Simple queries
The most typical use case:
$result = db_query("SELECT * FROM {node} WHERE uid = :uid", array(':uid' => $uid)); foreach ($result as $record) { print $record->nid; }
Get only one result for one field:
$nid = db_query("SELECT nid FROM {foo} WHERE uid = :uid", array(':uid' => $uid))->fetchField();
Get only one record:
$foo = db_query("SELECT * FROM {foo} WHERE uid = :uid", array(':uid' => $uid))->fetchArray(); $foo = db_query("SELECT * FROM {foo} WHERE uid = :uid", array(':uid' => $uid))->fetchObject();
More advanced queries
$query = db_select('civicrm_contribution', 'contrib') ->fields('contrib') ->condition('is_test', 0, '='); $query->addJoin('left', 'civicrm_contact', 'contact', 'contact.id = contrib.contact_id'); $query->fields('contact', array('first_name', 'last_name', 'display_name', 'prefix_id', 'preferred_language', 'do_not_trade', 'contact_type')); $result = $query->execute(); foreach ($result as $record) { // ... }
Note that the "addJoin" has to be done separately, not with chaining, since it returns the table name, not the DB object.
To add a sum on a field, for example:
$query->addExpression('sum(foo)', 'foo');
Debug
$query = db_select('node', 'n') ->fields('node'); dsm((string) $query);