2012-02-24 2 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

+0

上記のコードは私が尋ねていることを説明するためのものです。 – DaedBaet

答えて

1

は、一般に、これはあなたが百万人以上のレコードを持っている場合は特に、本当に良いアイデアではありません。

count()を実行するには、各レコードを調べてその情報を理解する必要があります。いくつかの行がある場合は、これは問題ではありませんが、レコードが大きくなると、正しいcountsqlを発行する方がよいでしょう。

あなたはこのように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)。自分の答え。 – vascowhite

+0

'SUM(IF(expire = 1、1、0))期限切れになりました。 _Churk_と他のすべての人に感謝します。 – DaedBaet

+0

私はあなたが編集したと思う、元の賞賛の1/2を切る。しかし、主なポイントはまだそこにあります。 – Churk

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

+0

ごめんなさいmysqliを最初に見て、私の答えを –

+0

更新しました。私はこれを常に使っています。また、TEXTフィールドとBLOBフィールドの結果を取得します(もしあなたが持っている場合) –

0

ちょうどSQL COUNT機能

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

*の代わりに探している列を使用している限り、これは機能するはずです。 –

+0

私は結果に適用する必要がある約50の条件があります。私はすでにすべての作業を行っていますが、mysqlへの呼び出しが多すぎるのを避けようとしています。 – DaedBaet

関連する問題