Drupal 7:检查数据库条目是否存在的最快方法

Bob*_*Bob 6 drupal-7

如果数据库条目存在,我怎么能最快地检查?我用这个代码:

$exists = db_query('SELECT tid FROM {taxonomy_index} WHERE tid = 1 AND nid = 1 LIMIT 1');
        if($exists->rowCount() > 0){
          drupal_set_message("exists");
         }
Run Code Online (Sandbox Code Playgroud)

Web*_*ant 9

我会做:

$result = db_select('taxonomy_index', 'ti')
  ->fields('ti', array('tid'))
  ->condition('tid', 1)
  ->condition('nid', 1)
  ->range(0, 1)
  ->execute()
  ->rowCount();

if ($result) {
  drupal_set_message(t('Exists'));
}
Run Code Online (Sandbox Code Playgroud)

与您的问题无关,但您应始终使用占位符来防止SQL注入 - 尽管如果您使用上面的查询构建器,那么它会为您处理.此外,在将文本写入屏幕时,应始终使用t()函数.


Jua*_* NR 6

db_select()比db_query()慢.有关db_select()比db_query()更适合的情况,请参阅此线程.

db_query() - > fetchField()是最简单的方法.请参阅以下代码段:

// Returns string(5) "admin"
var_dump(db_query('select name from {users} where uid = 1')->fetchField());

// Returns bool(false)
var_dump(db_query('select name from {users} where uid = -1')->fetchField());
Run Code Online (Sandbox Code Playgroud)