Are db_update->condition() and db_update->where() the same? If not, what are the differences?
1 Answer
condition() always involves a field/column name and a provided value (or an array of provided values). where() can contain arbitrary conditions (comparing fields against each other, can contain functions/expressions), it's just a string that is passed through.
condition() example, select everything where created is bigger than timestamp value.
$timestamp = 123465...;
$query->condition('created', $timestamp, '>');
where() example, select everything where changed is bigger than created.
$query->where('created < changed');
Everything that can be done with condition() can also be done with where(), but not the other way round. The following is the same as the condition() call.
$query->where('created > :timestamp', array(':timestamp' => $timestamp));
Works just fine, but is way more complicated. The basic rule is that condition() should be used whenever possible and if not, use where().