2012-04-30 14 views
0

私は動的に追加できるidカラム(sid)を持つmysqlテーブルを持っています。すべてのSUMフィールドが動的に作成されていると私は、実際のSIDのが何であるかを知らないことをmysqlの結果セットを持つPHP変数変数

SELECT SUM(IF(sid = 71, 1, 0)) as count71, 
SUM(IF(sid = 72, 1, 0)) as count72, 
SUM(IF(sid = 75, 1, 0)) as count75, 
SUM(IF(sid = 81, 1, 0)) as count85 
FROM `table` 
WHERE userid=44; 

注:今、私はそうのように、これらのSIDのそれぞれにグループ化され、すべてのエントリの数を取得するためにクエリをしています。今質問は、どのようにPHPの可変変数を使用してカウントごとに結果セットをループするのですか?私はこれを試したが動作しません。

$count_var = "rs['count71']" 
$$count_var // holds number of entries where sid is 71; 

ありがとうございます!

+1

欲しいもののために最適なソリューションです*グループあなたが欲しいものです。 –

答えて

3

私が代わりにこれを提案する可能性があります。

select sid, count(*) from `table` where userid = 44 group by sid ; 
+0

Doh!本当に私の問題を解決するだろう。しかし、ちょうど知識のために、もし私が上記のようにMySQLクエリを設計するならば、私は上記を達成するでしょうか? – user1181950

+0

@ user1181950:最初に '' SELECT DISTINCT sid FROM 'table''を実行することです。PHPでは、上記のようにSQLを構築する結果をループします。 – eggyal

+0

私はあなたがこれについて質問していると信じています: '$ sid = 71; $ count_of_71 = $ rs ["カウント"。 $ sid]; '。ここでevalを使用する必要はありません。 – troelskn

0

あなたが行うことができます:*によって


$count_var = "rs['count71']"; 
echo eval('return $'. $count_var . ';'); 

もちろんの@ troelsknの答えは、おそらくあなたが

+0

はい、これは間違いなく私の知識にとって有益です。ありがとう! – user1181950

関連する問題