私は達成しようとしているものと同様の(しかし同じではない)多くのフォーラムや質問をしてきました。私は古いmysqlクエリをPDOに更新しています。私は、PDOでCOUNT(*)を使用することに問題がある人や、fetch()の代わりにquery()を使用する方法、またはrowCount()を使用する方法やfetchColumn()を使用する方法について説明しています。PDOを使用してMySQLデータベースの列にある項目のインスタンス数を取得する
ただし、問合せが問合せ内の行のいずれか(ゼロ)を戻すかどうかを確認するためのものです。たぶん、クエリが有効かどうかをテストしたり、単一のクエリが返す行の数をリストした単一の行を返すことがありますか?それは私がやろうとしていることではない(あるいは私は間違っていると思っている)。
私が達成したいのは、各ユニークなアイテムが特定の列に何回出現するかのリストを取得することです。私はペイントボールのウェブサイトを持っています。そこでは、各カテゴリーにいくつのアイテムがあるかをリストしたいと思います。 (簡略化のために切り取ら)古いMySQLのコードは次のようなものだ:
$query = "SELECT Category, COUNT(*) FROM table WHERE Notes NOT LIKE 'Discontinued' GROUP BY Category";
$result = mysql_query($query);
$num_results = $result->num_rows;
while($row=mysql_fetch_array($result, MYSQL_NUM)) {
echo "$row[0]: $row[1]<br />";
}
私の結果は次のようになります。
航空:312
マーカー:627の
マスク:124
ペイント:97
今私はPDOで同じ結果を達成しようとしており、他の質問から引き出した約12の異なる提案を試みました尋ねた私は通常、自分自身でこれらの問題をハックするのが好きです。これは、タオルを投げて、実際にPHPフォーラムで自分の問題を投稿しなければならないのは初めてです。私は自分自身をとても混乱させてしまったので、もうどちらの方法がいいのかわからない。
新鮮な視点からのガイダンスは、大変に感謝しています。私は見ていない、または誤解していない方法がなければなりません。前もって感謝します!
PDOで同じクエリを使用し、他のクエリと同様に結果をフェッチするだけです。 'アイテムのインスタンス数'を取得することは特別なことではありません。mysqlとPDOのすべての結果です。 (PDO :: FETCH_OBJ) - >カウント; ' –
クイック・コメントのおかげで、マイク。' $ pdo->クエリ( 'SELECT COUNT()myTableからのカウントとして') - > execute() - >フェッチ(PDO :: FETCH_OBJ)私はfetch()を使用しないと言っているいくつかのページを見てきました。なぜなら、単一の行しか返さないからです。彼らはwhileループに入れたり、fetchAll()を使ったりする傾向があります。一部の人は、それらをまったく使用しないと言います。代わりにquery()を使用します。したがって、異なる視点のすべてで私の混乱の一部。私は方向を探求し続けており、昨日どのように進むべきかについてのヒントを見つけたかもしれない。私はそれを試して、コードがあればそれをポストバックして、他の人が必要に応じて見ることができるようにします。 – Tam
私のクエリはたった1つの行しか返さないためです。あなたのクエリ( 'SELECT category、count(*)as count ...')は、一意的なカテゴリごとに2つのフィールドと行を返します。 –