2012-11-24 44 views
0

我目前正在學習如何在PHP MySQL中構建一個站點。但是,我似乎不明白COUNT() as count,並不介意進一步的解釋。瞭解COUNT()爲`count`

我得到COUNT,0 || 1的原理,以及它如何返回與該查詢有關的所有值。

但是,沒有看到計數如何工作。無論如何,這就是我正在寫的代碼 - 所以我們有一個工作的例子 - 我最初變得困惑的地方。

"SELECT COUNT(id) as count, id 
FROM user 
WHERE email='$email' AND password='".md5$password."'" 
+1

只是一個方面的注意事項:小心你逃避你注入查詢的變量。它看起來像你的代碼是廣泛的'sql注入'。最好的是使用像PDO這樣的解決方案,而不是試圖重新制定一個逃避策略。 – arkascha

+0

感謝您的提示,我將real_escape函數中的電子郵件,md5將沒事 - 沒錯。 – edlee

回答

2

這就是所謂它有時被用來展現出更加吸引人的列標題,用戶或調用代碼別名

SELECT COUNT(`id`) as `count`.... 

將打印

count 
-------- 
5 

別名站立作爲列標題,而不是任意字符串:See the SQLFiddle to see the difference

從小提琴中可以看到標題欄看起來像某種方式,例如

count(*) 
-------- 
5 
2

使用Count()您可以計算結果集的返回行數。雙方還MySQL官方文檔中關於count

數據庫經常被用來回答這個問題,「多久某種類型的數據表中的發生?」例如,你可能想知道有多少寵物每個擁有者有多少隻寵物,或者您可能想對您的動物進行各種普查操作。

計算您擁有的動物總數與「寵物表中有多少行?」相同,因爲每隻寵物只有一條記錄。 COUNT(*)計算的行數,所以查詢到算你的動物看起來是這樣的:

SELECT COUNT(*) FROM pet;

AS count的一部分意味着該科拉姆會得到,你可以使用例如一個名字在PHP中。請參見w3schools上的此消除處理:

您可以使用別名爲表或列指定另一個名稱。如果您有很長或複雜的表名或列名,這可能是一件好事。

別名可以是任何東西,但通常很短。

+0

我想這個問題也是指「as count」部分。這意味着你可以將結果引用爲'count'! – Smamatti

+0

我添加了一行。但是我沒有在官方網站上找到更好的解釋。我會繼續尋找。 – rekire

0

如果運行這個SQL:

SELECT COUNT(id), id .... 

你會得到$row['numberofrecordshere']這將是非常困難的回聲(做* _fetch_assoc後)(或者在比較中使用),除非你知道多少記錄會有(這違背了這一結果的目的,反正)

返回它作爲計數可以讓你得到它產生的陣列中使用$row['count']

1

as count只是一個別名。您可以使用as來選擇任何字段或方法。這意味着你要更改數據集中返回的列的名稱。

SELECT `field` as another_name 

所以:

SELECT COUNT(*) as `count` 

只需重命名從COUNT(*)的列count使其更容易與無論您在什麼maniuplating結果集的工作。

它還使您可以更輕鬆地訪問您當前的查詢。很多人會做以下的大表名:

SELECT * FROM `table_with_ridiculous_name` as twrn WHERE twrn.id = 1 
+0

偉大的幫助謝謝 – edlee

+0

@edlee不用擔心:)你也可以爲許多SQL實現做以下操作 - 但是它通常比'as'關鍵字更令人困惑。 'SELECT field fieldalias'基本上完全忽略了'as'關鍵字。 – Pebbl