
ホームページを作っています。
レコードを検索したりカテゴリ別に絞り込んだりすることもできるようにしています。
レコードを閲覧しやすくするために、「前へ[0][1][2]次へ」のようなものをつけようとおもっています。
ところが、それをするためにはレコードの全ての数を取得しなければいけません。
全てのレコードを取得してそれからPHPの関数で件数を取得する方法もありますが、処理としてはスマートじゃないと思い、COUNT関数を使うべきなのかなと思いました。
なので、それで組んでみたんですけれど、カテゴリ別で絞り込むときに値が1にしかならないのです。
以下がソースです。
※#musicNumに件数が入ります。 $textFilterの例「あつい」 $tags_forWhereの例「pop,dance」
$musicNum = mysql_query("SELECT COUNT(*) as cnt
FROM contents_tags bt, mymusic b, tags t
WHERE (b.number LIKE '%{$textFilter}%'
OR b.title LIKE '%{$textFilter}%'
OR b.text LIKE '%{$textFilter}%' )
AND bt.TAG_ID = t.ID
AND (t.TAG IN ($tags_forWhere))
AND b.number = bt.CONTENT_ID
GROUP BY b.number
ORDER BY number DESC");
$musicNum = mysql_fetch_assoc($musicNum);
$musicNum = $musicNum['cnt'];
タグ機能はToxi法を使っています。
どこがおかしいのかご教授願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>その全体件数を取得したかったのですが・・。
であればGROUP BY句を省けばWHERE句で絞った全体件数が得られます
またこの場合戻り値は必ず1件以下なのでLIMIT句も必要ないでしょう
No.2
- 回答日時:
ネイティブなMySQL関数はすでに非推奨です。
PDOで書き直してください。http://php.net/manual/ja/mysqlinfo.api.choosing. …
>処理としてはスマートじゃないと思い、COUNT関数を使うべきなのかなと思いました。
少なくともMySQLであれば、selectした結果行数もrowCount()で取得出来ます。
$pdo = new PDO("mysql:host=localhost;dbname=データベース名;charset=utf8", 'ユーザー名', 'パスワード');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query('select * from テーブル名');
print $stmt->rowCount();
件数が少なければ、fetchAll()でまとめて取得してもいいですしね。
なお(当然ですが)外部から与えられた文字列がwhere条件として付加されるなら、プレースホルダを利用してください(queryではなくprepareとexecuteを使う)。
この回答への補足
回答ありがとうございます。
PDOのことを全く知らなかったので軽く勉強してきました。
書き直しているところなのですが、LIMIT文が上手く作用しなかったりしています。
bindValueで整数型に明示すればいけると思うのですが、どうもうまく・・。
それはともかく、rowCount()は確実ではないと調べていたら出ていたのですが・・。
使っても問題ないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#】FindWindowExの使い方を...
-
「取得先」という表現について
-
curlで取得出来るデータの制限...
-
IPアドレスとMACアドレスを取得...
-
Yahoo! のトップページのような...
-
VB.NETでボリュームを取得・設...
-
ExcelVBAで、FileSystemObject...
-
ドライブ文字からハードウェア...
-
recordsetが取得できなかった場合
-
【VBA】EXCELブックを開かずに...
-
潮汐表の表示方法
-
PHPを使って、別サイトの一部を...
-
RSSで取得したデータが文字切れ...
-
携帯の『ページ取得中』について
-
VBAでキーワード検索
-
コンビニで住民票を取得した場...
-
Dosブロンプトでtabを出力したい
-
<a href>タグ内のURL抽出
-
findstrのerrorlevel
-
cakephpで$paginatorにつけたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「取得先」という表現について
-
コンビニで住民票を取得した場...
-
Yahoo! JAPAN IDを新規取得でき...
-
EXCEL、マクロ-改ページ行番号...
-
Excel VBA:特定の文字列以降(...
-
VBS「開いているページ」のURL...
-
【C#】FindWindowExの使い方を...
-
ps3で久しぶりにCDの音楽情報取...
-
IPアドレスとMACアドレスを取得...
-
ローカルのコンピュータ名を取...
-
VBAでPDFのアクティブページ番...
-
VB.NETでボリュームを取得・設...
-
アメブロでテーマを指定したRSS...
-
DMMの動画を全件取得したのです...
-
(Win32)ファイルパスから物理ド...
-
【VBA】EXCELブックを開かずに...
-
各クライアントマシンのログイ...
-
VB or VBScriptでPCの製造番号...
-
format関数について
-
PHPを使って、別サイトの一部を...
おすすめ情報