プロが教える店舗&オフィスのセキュリティ対策術

初歩的なことかもしれません。

御助言頂きたいと思いご質問させて頂きます。

ポイントサイトを構築している途中で会員さんのポイント獲得ランキングを昇降順にDBより抽出しようと試みましたが無理でした。

こちらのソースからの後の記述が分かりません。
SELECT * FROM $k_user_table order by point DESC

結局分からぬまま最終的に以下の様にすることが精一杯でした。
----------------------
<?php
$point_count = $DB->getone("SELECT * FROM $k_user_table order by point DESC");
print $point_count;
?>
----------------------

この形でもやはり1件の獲得ポイントのみが出たり或いは一桁のちょっと訳が分からない数字が出たりします。

ポイントの高い順に10位まで表示したいと思っております。

テーブル名はこちらSELECT * FROM $k_user_table order by point DESCで間違いないはずなんですけどDBへの接続等その後のWHERE・=・<・>・等の記述方法の(~の場合~にする)の様な定義付けが分かりません。

先輩方の御助言頂けますでしょうか。

宜しく御願致します。

A 回答 (12件中11~12件)

No1追記です。



情報が少なすぎて具体的なアドバイスができませんが
$db->getone();
とありますが、これは、one。つまり1件だけ取得する という意味のメソッドではないのですか?

DB関連で何を使ってるのかわかりませんし、もしかしたら自作のclassを作っているのかもしれませんが、メソッド名を見る限り、クエリーした結果の一番最初のレコードのみを返すっていうメソッドではないのでしょうか?
    • good
    • 0
この回答へのお礼

お世話になっております。

メソッド等は自分は分からないんです。。。
GETOLL・GETLOW等色々試してみましたけどエラーになったりして出てくれません。

他の内容をDBから抽出している場合には以下のソースで間違いないようです。()

<?php
$man = "男性";
$man = mb_convert_encoding($man,"EUC-JP","SJIS");
$man_count = $DB->getone("SELECT count(*) FROM $k_profile where sex='$man' ");
print $man_count;
?>名

昨日教えて頂きました内容で試してみましたけど「Arrly」と言う表示が出ています。。。

ソースはこちらになります。

<?php
$point_count = $DB->getone("SELECT * FROM $k_user_table order by point DESC");
print $point_count;
?>

結果は「4」と言う数字が一つだけ出ました。

お礼日時:2009/01/17 13:35

DBの種類は?



上位10個を取得したい
というのであれば。

MySQLであれば LIMIT
PostgreSQLであれば、 LIMIT OFFSET
Oracleであれば、 rownumを駆使するし。
SQL server であれば、 row_number()か、TOP か。


また、
>$point_count = $DB->getone("SELECT * FROM $k_user_table order by point DESC");
これですが。

$point_count = $DB->getone("SELECT * FROM ".$k_user_table." order by point DESC");
の方がお行儀良いです。
    • good
    • 0
この回答へのお礼

お世話になります。

御回答頂き有り難うございます。

詳細の方記載せず誠に申し訳御座いません。

DBの種類はMySQLになります。

購入したシステムを自分なりにと思い色々しているだけの素人で御座います。

Classと言う名前のファイルはどこかで見た様な気もします。

御助言頂きましたLIMITを$DB->の次にありますgetoneの部分をLIMITに書き換えるべきですか。

また、DESC"); 以降の段にありますprint $point_count;の部分の変更やその他の付け加えたりする記述はありませんか。

DESCの抽出のソースも新しいのを教えてくださり感謝致します。

今一[=]["][>]等の定義が理解出来ていないのですごく曖昧に記述してしまったりしていました。

御助言頂きましたこちらに変更して再度試してみます。

夜分大変失礼致しました。

お礼日時:2009/01/17 03:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!