どんな風に記述すればいいのか教えて下さい。
それとも,PHPでカウントアップした方がよいのでしょうか?
わかる人お願いします。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_08.htm
うまくいかないというのはどういうことでしょうか?
group byが必要だとかそういうSQL的な問題ですか?
それとも、、、
是は私のケースですがOracleなどではcountが0件でもレコードを返してくれますが、mySQLはnullを返してくるようです。
先日はまりました。
レコードセットそのもが取れない場合の処理と、
サブクエリなどを用いていてレコードセットは取れるけれどnullが帰ってくるというケースがあると思います。
前者はPHPなどで対応するとして、
後者は
select
ifnull(count(col1),0) cnt
などのようにifnullでもいれてあげるといいですよ。
count で問題ないと思います。
こちらを参照されてはいかがでしょうか
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_08.htm
countを使わない場合は、mysql_num_rows という関数でも取得できます。
select count(*) as cnt from テーブル名;
としてcntというカラム名でデータを取得すればいいのでは?
関数を使う事で擬似カラム名を定義しないとデータを取得できないことがあります。
列名が分からないので表示の仕方が分からないということでしょうか。
mysql_fetch_rowで値を取得し、配列の1番目(添字0)の値を表示すれば良いです。
mysql_fetch_rowはmysql_fetch_arrayでオプションにMYSQL_NUMを指定した場合と同じで、数値添字を取得します。
以下のサンプルでいかがでしょうか。
<?php // HTML出力用設定 mb_http_output('UTF-8'); header("Content-Type: text/html; charset=UTF-8"); // HTMLのヘッダー部分出力 print <<<EOF <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>MySQL count(*)の表示テスト</title> </head> <body> EOF; // MySQLに接続 (サーバ名、ユーザーID、パスワードは適宜変更) $con = mysql_connect("localhost","user","password") or die("MySQLに接続できません。"); // データベースを選択 (例では test を選択) mysql_select_db('test'); // SQLで問合せ (例ではテーブル名を sample01 とする) $sql = "select count(*) from sample01;"; $result=mysql_query($sql); mysql_close($con); /* 結果の有無によって表示を変更 上記のSQLは結果を1行、1列しか返さないので、 mysql_fetch_rowで値を取得 1列目の値は配列の添字0にセットされる */ if (!$result){ print "検索結果を取得できませんでした。"; } else { $row = mysql_fetch_row($result); print "行数は" . $row[0] . "です。"; } // HTMLのフッター部分出力 print <<<EOF </body> </html> EOF; ?>
上記の例では数値で取得している、というのを強調するためにmysql_fetch_rowを使用しましたが、関数を使い分けるのが面倒な場合、mysql_fetch_arrayを使っても問題ありません。
mysql_fetch_arrayはオプションで連想配列での取得(MYSQL_ASSOC)、添字配列での取得(MYSQL_NUM)、両方での取得(MYSQL_BOTH)を選べるのですが、デフォルトではMYSQL_BOTHになっています。
ただ、MYSQL_BOTHで取得すると連想配列、添字配列の2つの方法で値を変数に取得しますので、速度を気にするケースではMYSQL_NUMオプションを使用するか、mysql_num_rowを使った方が良いでしょう。
(気にするほどの速度差はないと思いますが。)
参考になれば幸いです。
出来ました。親切に解りやすく記述して下さって本当にありがとうございます。
助かりました。
select count(*) from テーブル名;
をしてからはどうするのですか?
どう表示していいかわかりません。