2012-06-23 10 views

cevap

8

yapardım: ben bu kodu kullanmak

$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')); 
} 

sorunuzla ilgili değil, ama her zaman SQL Enjeksiyon karşı korumak için tutucuları kullanmalıdır - gerçi yukarıdaki gibi sorgu oluşturucu kullanıyorsanız o zaman senin için halleder. Ayrıca, ekrana yazı yazarken her zaman t() işlevini kullanmalısınız.

+0

hmm, güzel bir şekilde, ama söyleyemem, bu en hızlı yoldur :) oy! – Bob

+0

Bu yol gayet iyi, sütunlar yine de endekslendi, bu yüzden başka bir yol bulma emrini vermek için yeterince yavaş göremiyorum. Sorgunun ne kadar sürdüğü ve geri gönderileceği zamanlamaya değer olabilir, bu işlevlere bir göz atın http://api.drupal.org/api/search/7/timer_ –

6

db_select() db_query() öğesinden daha yavaştır. Db_select() 'in db_query()' den daha iyi uyuştuğu senaryolar için bkz. this thread.

db_query() - fetchField() en basit yaklaşımdır. Aşağıdaki parçacıklara bakın:

<?php 

// 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()); 

</pre> 
+0

Bu, henüz nasıl görüldüğüne dair en iyi örnektir. Drupal 6'nın db_result() işlevini değiştirin (yani, eğer (db_result ($ query)) {// do stuff} else {// no records} ') – DrewT

İlgili konular