2012-04-12 146 views
2

檢查所需數據是否在數據庫中的正確方法是什麼?檢查數據庫中是否存在數據庫

我目前使用的是,

mysql_query("SELECT anyfield FROM table WHERE field='$data'");

,然後檢查是否任何行受到了影響。

但我真的沒有任何使用提取的數據anyfield。 儘管這裏的資源使用量很小,但是如何在不從表中提取任何其他字段的情況下檢查數據庫中是否存在數據的正確方法是什麼?

+2

爲什麼不使用簡單的count()函數。 – Zohaib 2012-04-12 08:01:49

+0

那個建議是針對mysql_num_rows的嗎?我更新了一下這個問題,所以現在你知道我在找什麼:) – Kishor 2012-04-12 08:06:27

+0

有關使用count()的一點細節,最好使用count(id) - 這需要更少的時間。或者,只需從表格中選擇ID,其中字段='data''。 – rdo 2012-04-12 08:09:48

回答

5

讓數據庫計數和檢索查詢計數的數據。

$result = mysql_query('SELECT COUNT(*) FROM `table` WHERE `field` = ...'); 
if (!$result) { 
    die(mysql_error()); 
} 
if (mysql_result($result, 0, 0) > 0) { 
    // some data matched 
} else { 
    // no data matched 
} 
+0

這是要走的路。 – 2012-04-12 08:16:18

+0

正是我所要求的。 – Kishor 2012-04-12 08:22:01

2
$result = mysql_query("SELECT `field` FROM `table` WHERE `field` = '".$data."'"); 
if (mysql_num_rows($result)){ 
    // Rows exist 
} 

OR

$result = mysql_query("SELECT COUNT(`field`) as count FROM `table` WHERE `field` = '".$data."'"); 
$row = mysql_fetch_array($result); 
if ($row ['count']){ 
    // Rows exist 
} 
+0

哈哈。你誤解了這個問題。我知道如何做到這一點,但是我對'anyfield'沒有任何用處。我只需要檢查'field'中是否存在'$ data'。 我在問是否可以在不從數據庫中抓取'anyfiled'的情況下完成。 – Kishor 2012-04-12 08:10:28

+0

看我的編輯.... – 472084 2012-04-12 08:13:25

+0

Gotcha ..謝謝! – Kishor 2012-04-12 08:22:46

0

我會確保,如果我正在檢查數據,儘可能少地返回數據。

取一個字段(我通常做id),並確保您使用LIMIT,例如。 LIMIT 1 ...假設您只想知道是否存在任何記錄。

由於您使用PHP變量來查找記錄,如果它適合您的情況,您可能可以在第一條獲得$data的SQL行上執行LEFT JOIN,但這對於您所需要的操作可能很容易矯枉過正。