chọn count (*) từ bảng mysql trong php


92

Tôi có thể nhận được cả giá trị và hàng của kết quả truy vấn mysql.

Nhưng tôi đang đấu tranh để có được đầu ra duy nhất của một truy vấn. ví dụ:

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

Tôi cần kết quả để hiển thị. Nhưng tôi không nhận được kết quả.

Tôi đã thử với các phương pháp sau:

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

Nhưng tôi đã không thành công khi hiển thị (lấy) giá trị thực tế.


8
Bây giờ bạn nên sử dụng PDO .
Lucio

Câu trả lời:


202

Bạn cần đặt bí danh cho tổng hợp bằng cách sử dụng astừ khóa để gọi nó từmysql_fetch_assoc

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

7
Sau phiên bản 5.x truy vấn này sẽ không hoạt động chỉ cần thay thế mysql bằng mysqli để làm cho nó hoạt động.
ajay verma

32

Nếu bạn chỉ cần giá trị:

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

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);đang cứu một biến không cần thiết
Max Muster

Chính xác; câu trả lời của tôi phù hợp với câu hỏi.
bmaupin

4
@eichertc trình thông dịch php có biến luôn luôn bên trong, vì anh ta cần có kết quả trong bộ nhớ theo cách này hay cách khác. Vì vậy, cách của bạn chỉ làm cho mã kém hơn để đọc và duy trì, IMHO.
Tom

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

Hãy thử mã này.


10

Hãy bắt đầu sử dụng PDO.

mysql_ * không được dùng nữa kể từ phiên bản PHP 5.5.0 và sẽ bị xóa hoàn toàn trong 7. Hãy làm cho việc nâng cấp và bắt đầu sử dụng nó dễ dàng hơn ngay bây giờ.

$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

đây là mã để hiển thị không có hàng nào trong bảng với PHP

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

Tôi thích sử dụng ASở đây, thay vì cần phải gõecho $data['count(*)'];
Typewar

2

Đối với người dùng mysqli, mã sẽ giống như sau:

$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']);

hoặc là:

$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];

sau rất nhiều giờ tuyệt vời :)


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'];
  }     
 }

Trong đó nó đếm số lần xuất hiện trong cột câu hỏi1, công việc của nó hoàn toàn


1

bạn cũng có thể sử dụng nó và nâng cấp lên mysqli_(ngừng sử dụng mysql_*tiện ích mở rộng ...)

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

1

Với mysql v5.7.20, đây là cách tôi có thể lấy số lượng hàng từ một bảng bằng 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;

Dòng thứ ba sẽ trả về một cấu trúc giống như sau:

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

Trong trường hợp đó, câu lệnh echo kết thúc sẽ trả về:

1570

1

Tôi nghĩ rằng có lỗi đánh máy trong mã của bạn và bạn nên xóa dấu chấm phẩy thứ hai đến dấu chấm phẩy cuối cùng trong:

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

1

Bạn cần đặt bí danh cho tổng hợp bằng cách sử dụng astừ khóa để gọi nó từ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>';

Kết quả:

nhập mô tả hình ảnh ở đây


0

Tôi nghĩ đó là câu trả lời tốt hơn.

$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;

Điều này cũng sẽ ổn nhưng đây là thực hiện những gì trả về giá trị chỉ mục 0 bằng cách dịch chuyển mảng tìm nạp. chào mừng tất cả


-1

Trong số các tùy chọn, tùy chọn này không được đề cập. Ngay cả khi nó không tối ưu hoặc không cần thiết nhưng nó có thể được thực hiện bằng một vòng lặp đơn giản:

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

Đó là bởi vì không cần thiết phải viết một vòng lặp. Vui lòng không bao giờ đăng câu trả lời chỉ có mã. Mọi câu trả lời đều đáng được giải thích - ngay cả khi nó đơn giản. Đặc biệt là trên các trang quá tải như trang này - bạn nên giải thích lợi thế của lời khuyên của bạn so với các câu trả lời khác.
mickmackusa

Tôi tin rằng nếu tùy chọn này hoạt động ngay cả khi nó không tối ưu về mặt nào đó thì nó có thể giúp ai đó giải quyết vấn đề của họ. Đối với tôi, tôi thường tìm câu trả lời và thậm chí thường xuyên có những ý tưởng phù hợp với tôi trong những câu trả lời không được đánh dấu là 'câu trả lời hay nhất'. Và đôi khi những "giải pháp kỳ lạ" như vậy tiết lộ logic đằng sau ý tưởng, ý tưởng đó được khai thác. Bảo trọng!
Yury Wallet

1
Hãy đồng cảm với những nhà nghiên cứu đang cố gắng xác định câu trả lời tốt nhất cho dự án của họ và không lãng phí thời gian. Các nhà nghiên cứu KHÔNG muốn đọc 18 giải pháp rất giống nhau - họ muốn tìm ra câu trả lời tốt nhất càng nhanh càng tốt. Không ai nên sử dụng các mysql_hàm nữa - ngay cả khi câu hỏi cũ này đang sử dụng nó. Trong IDE của tôi, sẽ có một cờ cho biết $numbcó thể không được khai báo. Sử dụng một vòng lặp đã được PushkarPokharkar thực hiện nhưng một lần nữa nó là không cần thiết. Tôi sẽ thực hiện phần việc của mình để giúp các nhà nghiên cứu bằng cách từ chối các kỹ thuật mà tôi không khuyến khích.
mickmackusa

1
Đây KHÔNG phải là một cuộc tấn công cá nhân vào bạn. Đây là nhận định của tôi về chất lượng của bài đăng này.
mickmackusa

-4

Nếu bạn chỉ muốn giá trị đếm, bạn có thể viết tắt:

$cnt = mysql_num_rows(mysql_query('select * from students'));
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.