PHPのmysqlのテーブルからcount(*)を選択します


92

mysqlクエリ結果の値と行の両方を取得できます。

しかし、クエリの単一の出力を取得するのに苦労しています。例えば:

$result = mysql_query("SELECT COUNT(*) FROM Students;");

結果を表示する必要があります。しかし、私は結果を得ていません。

私は次の方法で試しました:

  1. mysql_fetch_assoc()
  2. mysql_free_result()
  3. mysql_fetch_row()

しかし、実際の値を表示(取得)することに成功しませんでした。


8
ここまでで、PDOを使用する必要があります。
Lucio

回答:


202

asから呼び出すには、キーワードを使用して集計にエイリアスを設定する必要がありますmysql_fetch_assoc

$result=mysql_query("SELECT count(*) as total from Students");
$data=mysql_fetch_assoc($result);
echo $data['total'];

7
5.xバージョン以降、このクエリは機能しません。mysqlをmysqliに置き換えるだけで機能します。
ajay verma

32

値だけが必要な場合:

$result = mysql_query("SELECT count(*) from Students;");
echo mysql_result($result, 0);

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);は1つの不要な変数を保存しています
Max Muster

正しい; 私の答えは質問に合わせたものでした。
bmaupin

4
@eichertc phpインタープリターは変数を常に内部に持っています。彼は何らかの方法でメモリに結果を格納する必要があるからです。だから、あなたのやり方はコードを読んだり維持したりすることを悪化させるだけです、IMHO。
Tom

14
$result = mysql_query("SELECT COUNT(*) AS `count` FROM `Students`");
$row = mysql_fetch_assoc($result);
$count = $row['count'];

このコードを試してください。


10

PDOの使用を開始してください。

mysql_ *はPHP 5.5.0で非推奨になり、7で完全に削除されます。アップグレードを簡単にして、今すぐ使い始めましょう。

$dbh = new \PDO($dsn, $user, $password);
$sth = $dbh->prepare('SELECT count(*) as total from Students');
$sth->execute();
print_r($sth->fetchAll());

6
$num_result = mysql_query("SELECT count(*) as total_count from Students ") or exit(mysql_error());
$row = mysql_fetch_object($num_result);
echo $row->total_count;

4

PHPでテーブルに行を表示しないコードは次のとおりです

$sql="select count(*) as total from student_table";
$result=mysqli_query($con,$sql);
$data=mysqli_fetch_assoc($result);
echo $data['total'];

AS入力する代わりに、ここを使用するのが好きですecho $data['count(*)'];
Typewar

2

mysqliユーザーの場合、コードは次のようになります。

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);

$result = $mysqli->query("SELECT COUNT(*) AS Students_count FROM Students")->fetch_array();
var_dump($result['Students_count']);

または:

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);

$result = $mysqli->query("SELECT COUNT(*) FROM Students")->fetch_array();
var_dump($result[0]);

1
 $howmanyuser_query=$conn->query('SELECT COUNT(uno)  FROM userentry;');
 $howmanyuser=$howmanyuser_query->fetch_array(MYSQLI_NUM); 
 echo $howmanyuser[0];

非常に多くの時間の後素晴らしい:)


1
$abc="SELECT count(*) as c FROM output WHERE question1=4";
$result=mysqli_query($conn,$abc);
if($result)
 {
    while($row=mysqli_fetch_assoc($result))
  {
        echo $row['c'];
  }     
 }

これでは、question1列の発生数をカウントし、完全に機能します


1

これを使用してアップグレードすることもできますmysqli_mysql_*拡張機能の使用を停止...)

$result = mysqli_query($conn, "SELECT COUNT(*) AS `count` FROM `Students`");
$row = mysqli_fetch_array($result);
$count = $row['count'];
echo'$count';

1

mysql v5.7.20では、PHP v7.0.22を使用してテーブルから行数を取得する方法を以下に示します。

$query = "select count(*) from bigtable";
$qresult = mysqli_query($this->conn, $query);
$row = mysqli_fetch_assoc($qresult);
$count = $row["count(*)"];
echo $count;

3行目は、次のような構造を返します。

array(1) {
   ["count(*)"]=>string(4) "1570"
}

その場合、終了エコーステートメントは次を返します。

1570

1

私はあなたのコードにタイプミスがあると思うので、最後から2番目のセミコロンを削除する必要があります:

$result = mysql_query("SELECT COUNT(*) FROM Students;");

1

asから呼び出すには、キーワードを使用して集計にエイリアスを設定する必要がありますmysqli_fetch_assoc

$result=mysqli_query($conn,"SELECT count(*) as total from Students");
$data=mysqli_fetch_assoc($result);
echo $data['total'];

1
$db  = new PDO('mysql:host=localhost;dbname=java_db', 'root', '') or die(mysql_errno());
$Sql = "SELECT count(*) as 'total' FROM users";
$stmt = $db->query($Sql);
$stmt->execute();
$data = array();
$total = $stmt->fetch(PDO::FETCH_ASSOC);
print '<pre>';
print_r($total);
print '</pre>';

結果:

ここに画像の説明を入力してください


0

いい答えだと思います。

$query = "SELECT count(*) AS total FROM table_name"; 
mysql_select_db('database_name');
$result = mysql_query($query); 
$values = mysql_fetch_assoc($result); 
$num_rows = $values['total']; 
echo $num_rows;

-1
$qry_appr = "SELECT COUNT(*) FROM comments WHERE admin_panel_id ='$id' AND status = 'ON'";
$qry_data = mysqli_query($con, $qry_appr);
$approve_count = mysqli_fetch_array($qry_data);
$toatalCount = array_shift($approve_count);
echo $toatalCount;

これも問題ありませんが、これはフェッチ配列をシフトして0のインデックス値を返すものです。すべてを歓迎する


-1

オプションの範囲外のため、これは言及されていません。それが最適でも不要でもない場合でも、単純なループで実行できます。

$result=mysqli_query($conn, "SELECT count(1) as total from Students");
foreach ($result as $rez) {$numb=$rez['total'];}
echo $numb;

ループを書く必要がないからです。コードのみの回答は投稿しないでください。すべての答えは説明するに値します-たとえそれが単純であってもです。特に、このようなオーバーロードされたページでは、他の回答に対するアドバイスの利点を説明する必要があります。
mickmackusa

このオプションが機能していても、最適化されていなくても、誰かが問題を解決するのに役立つと思います。私については、「ベストアンサー」としてマークされていない回答の中で、私にとってはよくある答えと、さらには自分に役立つアイデアを見つけることがよくあります。そして時々そのような「奇妙な解決策」はアイデアの背後にある論理を明らかにし、それは悪用される可能性があるということです。気を付けて!
Yury Wallet

1
自分のプロジェクトに最適な答えを見つけようとしているが、時間を無駄にしない研究者に共感を示します。研究者は18の非常に類似したソリューションを読みたくありません-最良の答えをできるだけ早く見つけたいと考えています。mysql_この古い質問で関数が使用されている場合でも、関数を使用する必要はありません。私のIDEでは、$numb宣言されていない可能性があることを示すフラグがあります。ループの使用は、PushkarPokharkarによって既に行われていますが、やはり不要です。私がお勧めしないテクニックに反対票を投じることで、研究者を助けるために私の役割を果たします。
mickmackusa

1
これはあなたに対する個人的な攻撃ではありません。これは、この投稿の品質に関する私の判断です。
mickmackusa

-4

カウント値だけが必要な場合は、省略形で実行できます。

$cnt = mysql_num_rows(mysql_query('select * from students'));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.