2012-02-24 27 views
0

例如:是否有可能從表中獲取所有行並使用php應用條件?

// GET ALL ROWS 
$get_rows = $sql->query("SELECT expire,date_original,date, FROM table"); 
$gr = $get_rows->fetch_rows; 

然後與結果工作...

$expired = count($gr->expire == 0); 
$active = count($gr->expire == 1); 
$reposted = count($gr->date_original != date); 

或者其他類似的效果呢?

+0

'count'?在你的情況下總會返回1。 – hakre 2012-02-24 20:39:21

+0

上面的代碼是假想的,只是試圖說明我在問什麼。 – DaedBaet 2012-02-24 20:50:15

回答

1

一般來說,這是不是一個真正的好主意,尤其是如果你有超過一百萬條記錄。

並且爲了執行count(),您需要遍歷每條記錄並理解信息。如果你有幾行,這沒有關係,但是當記錄變大時,你最好是發出正確的count sql。

你最好寫這樣的SQL:

select SUM(IF(expire == 1, 1, 0)) as expired, 
SUM(IF(expire == 0, 1, 0)) as notExpired 
from table; 

,您仍然可以申請條件,但如果你有足夠的資源來處理您檢索記錄的數量,然後使用上述解決方案,但當你在談論大數據量的企業,S

+0

@Churk你應該[編輯](http://stackoverflow.com/posts/9437579/edit)你的答案添加aditional信息,而不是評論你的自己的答案。 – vascowhite 2012-02-24 20:46:43

+0

SUM(IF(expire = 1,1,0))expired' [W/o語法錯誤上面]工作完美。謝謝_Churk_和其他所有迴應的人。 – DaedBaet 2012-02-24 21:41:45

+0

我認爲你編輯,切斷原來的讚揚1/2。但主要觀點仍然存在。 – Churk 2012-02-24 21:41:45

1

使用mysqli_fetch_object

$result = mysqli_query("SELECT expire,date_original,date, FROM table"); 
    while ($gr= mysqli_fetch_object($result)) { 
     $expired = count($gr->expire == 0); 
     $active = count($gr->expire == 1); 
     $reposted = count($gr->date_original != date); 
    } 
+0

OP是關於mysqli的mysql函數嗎?這根本不是答案。 – hakre 2012-02-24 20:31:14

+0

對不起,沒有看到mysqli第一,更新了我的答案 – 2012-02-24 20:34:10

+0

我一直使用它,它的工作很棒。也可以從TEXT和BLOB字段得到結果(如果你有一個) – 2012-02-24 20:44:43

0

只需使用SQL COUNT功能

SELECT COUNT(*) as `expired` from `table` WHERE <your_condition> 
+0

只要它使用他正在尋找的列而不是*這應該工作。 – 2012-02-24 20:51:48

+0

我有大約50個條件需要應用於結果。我已經有一切工作,但我試圖避免這麼多的電話到MySQL。 – DaedBaet 2012-02-24 21:03:21