If you look closely at the function below, the SQL statement is run even when count($terms) is 0 and thus $where_tids and $where_nid are still NULL. You should move the db_query() call inside the if(count($terms)) block. (One line before where it is now.)

//remove terms from this vocab either for one or for all nodes
function autocategorise_clear_terms($vid, $nid = 'nid') {
  //get a list of all the tids in this vocab
  $terms = taxonomy_get_tree($vid);
  if (count($terms)) {
    foreach ($terms as $term) {
      $where_tids[] = 'tid = '.$term->tid;
    }
    $where_tids = implode (' OR ', $where_tids);

    if (is_numeric($nid)) {
      $where_nid = ' nid =' . $nid;
    } else {
      $where_nid = '1=1';
    }
  }
  db_query('DELETE FROM {term_node} WHERE (' . $where_tids . ') AND ' . $where_nid);
}

Thank you.
Alexis Wilke

Comments

matslats’s picture

Status: Active » Closed (fixed)

Thanks