Penggunaan fungsi COUNTED pada PHP

Pedoman PHP PDO Referensi

Table of Contents

  • penjelasan
  • tatabahasa
  • Kembali Nilai
  • Mengembalikan jumlah baris dihapus
  • Dihitung dengan jumlah baris yang dikembalikan oleh pernyataan SELECT
  • PDOStatement::rowCount
  • Dalam artikel ini
  • Tampilkan Nilai

PDOStatement :: rowCount - Mengembalikan pernyataan SQL yang pada jumlah baris yang dipengaruhi [PHP 5> = 5.1.0, PECL PDO> = 0.1.0]

penjelasan

tatabahasa

int PDOStatement::rowCount [ void ]

PDOStatement :: rowCount [] mengembalikan DELETE, INSERT, atau pernyataan UPDATE mempengaruhi jumlah baris dieksekusi oleh objek PDOStatement sesuai.

Jika pernyataan SQL dieksekusi oleh PDOStatement terkait adalah pernyataan SELECT, beberapa data dapat kembali jumlah baris yang dikembalikan oleh pernyataan ini. Namun, metode ini tidak dapat menjamin bahwa semua data valid, dan untuk aplikasi portabel tidak harus bergantung pada metode ini.

Kembali Nilai

Mengembalikan jumlah baris.

contoh

Mengembalikan jumlah baris dihapus

PDOStatement :: rowCount [] mengembalikan jumlah baris yang dipengaruhi oleh DELETE, INSERT, UPDATE, atau analisis dampak.

Contoh di atas keluaran:

Return number of rows that were deleted:
Deleted 9 rows.

Dihitung dengan jumlah baris yang dikembalikan oleh pernyataan SELECT

Bagi kebanyakan database, PDOStatement :: rowCount [] tidak mengembalikan jumlah baris yang dipengaruhi oleh pernyataan SELECT. Metode alternatif adalah dengan menggunakan PDO :: query [] dan dimaksudkan untuk mengeluarkan pernyataan SELECT dalam kondisi ekspresi yang sama SELECT COUNT [*] pernyataan, dan kemudian menggunakan PDOStatement :: fetchColumn [] untuk mendapatkan jumlah baris yang dikembalikan. Sehingga aplikasi dapat dijalankan dengan benar.

Contoh di atas output:

apple
banana
orange
pear

Pedoman PHP PDO Referensi

Lompati ke konten utama

Browser ini sudah tidak didukung.

Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.

PDOStatement::rowCount

  • Artikel
  • 08/16/2022
  • 2 menit untuk membaca

Dalam artikel ini

Unduh driver PHP

Mengembalikan jumlah baris yang ditambahkan, dihapus, atau diubah oleh pernyataan terakhir.

Sintaks

  
int PDOStatement::rowCount [];  

Tampilkan Nilai

Jumlah baris yang ditambahkan, dihapus, atau diubah.

Keterangan

Jika pernyataan SQL terakhir yang dijalankan oleh PDOStatement terkait adalah pernyataan SELECT, kursor PDO::CURSOR_FWDONLY mengembalikan -1. Kursor PDO::CURSOR_SCROLLABLE mengembalikan jumlah baris dalam tataan hasil.

Dukungan untuk PDO ditambahkan di Driver Microsoft versi 2.0 untuk PHP untuk SQL Server.

Contoh

Contoh ini menunjukkan dua penggunaan rowCount. Penggunaan pertama mengembalikan jumlah baris yang ditambahkan ke tabel. Penggunaan kedua menunjukkan bahwa rowCount dapat mengembalikan jumlah baris dalam tataan hasil saat Anda menentukan kursor yang dapat digulirkan.

  

Lihat juga

Kelas PDOStatement

Pdo

Ada banyak pernyataan yang saling bertentangan di sekitar. Apa cara terbaik untuk menghitung jumlah menggunakan PDO di PHP? Sebelum menggunakan PDO, saya cukup menggunakan mysql_num_rows.

fetchAll adalah sesuatu yang tidak saya inginkan karena saya terkadang berurusan dengan dataset besar, jadi tidak baik untuk saya gunakan.

Apakah Anda punya saran?

$sql = "SELECT count[*] FROM `table` WHERE foo = bar"; 
$result = $con->prepare[$sql]; 
$result->execute[]; 
$number_of_rows = $result->fetchColumn[]; 

Bukan cara yang paling elegan untuk melakukannya, ditambah lagi itu melibatkan permintaan tambahan.

PDO memiliki PDOStatement::rowCount[], yang tampaknya tidak berfungsi di MySql. Sungguh menyakitkan.

Dari Dokumen PDO:

Untuk sebagian besar basis data, PDOStatement :: rowCount [] tidak mengembalikan jumlah baris yang dipengaruhi oleh pernyataan SELECT. Sebagai gantinya, gunakan PDO :: query [] untuk mengeluarkan SELECT Pernyataan COUNT [*] dengan .__ sama. predikat sebagai SELECT yang Anda inginkan pernyataan, lalu gunakan PDOStatement :: fetchColumn [] ke ambil jumlah baris yang akan dikembalikan. Aplikasi Anda kemudian lakukan tindakan yang benar.

EDIT: Contoh kode di atas menggunakan pernyataan yang disiapkan, yang dalam banyak kasus mungkin tidak perlu untuk tujuan menghitung baris, jadi:

$nRows = $pdo->query['select count[*] from blah']->fetchColumn[]; 
echo $nRows;

Seperti yang saya tulis sebelumnya di jawaban untuk pertanyaan yang sama , satu-satunya alasan mysql_num_rows[] bekerja adalah karena secara internal mengambil semua baris untuk memberi Anda informasi itu, bahkan jika itu tidak seperti Anda.

Jadi di PDO, opsi Anda adalah:

  1. Gunakan fungsi MySQL FOUND_ROWS[] .
  2. Gunakan fungsi fetchAll[] PDO untuk mengambil semua baris ke dalam array, kemudian gunakan count[] di atasnya.
  3. Lakukan permintaan tambahan ke SELECT COUNT[*], seperti yang disarankan karim79.

Ini sangat terlambat, tetapi saya mengalami masalah dan saya melakukan ini:

function countAll[$table]{
   $dbh = dbConnect[];
   $sql = "select * from `$table`";

   $stmt = $dbh->prepare[$sql];
    try { $stmt->execute[];}
    catch[PDOException $e]{echo $e->getMessage[];}

return $stmt->rowCount[];

Ini sangat sederhana, dan mudah. :]

Sebelum menggunakan PDO, saya hanya menggunakan mysql_num_rows[].

Anda seharusnya tidak menggunakannya sejak awal.

mysql_num_rows[], serta PDOStatement::rowCount[] menyiratkan bahwa Anda sudah memilih data Anda. Dalam hal ini hanya ada dua kemungkinan kasus penggunaan untuk fungsi seperti itu:

  1. Anda memilih data Anda hanya untuk mendapatkan hitungan.
  2. Anda ingin tahu apakah permintaan Anda mengembalikan baris.

Dan yang pertama tidak boleh digunakan sama sekali. Seseorang seharusnya tidak pernah memilih baris untuk menghitungnya, karena server Anda mungkin tersedak karena dataset yang besar dikembalikan.

Selain itu, memilih baris hanya untuk menghitungnya tidak masuk akal. Permintaan count[*] harus dijalankan sebagai gantinya, dengan hanya satu baris yang dikembalikan. 

Kasus penggunaan kedua tidak terlalu berbahaya tetapi tidak ada gunanya: jika Anda perlu tahu apakah permintaan Anda mengembalikan data, Anda selalu memiliki data itu sendiri! 

Katakanlah, jika Anda hanya memilih satu baris, maka ambil saja, dan periksa hasilnya:

$stmt->execute[];
$row = $stmt->fetch[];
if [$row] { // here! as simple as that
}

Jika Anda perlu mendapatkan banyak baris, maka Anda dapat menggunakan fetchAll[].

fetchAll[] adalah sesuatu yang tidak saya inginkan karena saya terkadang berurusan dengan dataset besar

Perhatikan bahwa dalam aplikasi web Anda tidak boleh memilih banyak baris. Hanya baris yang akan benar-benar digunakan pada halaman web yang harus dipilih. Untuk tujuan yang harus digunakan LIMIT atau klausa serupa dalam SQL. Dan untuk jumlah data yang moderat, tidak apa-apa menggunakan fetchAll[]

Dalam kasus yang jarang terjadi ketika Anda perlu memilih jumlah baris yang sangat besar [dalam aplikasi konsol misalnya], untuk mengurangi jumlah memori yang digunakan, Anda harus menggunakan permintaan yang tidak dibacok, tetapi dalam kasus ini rowCount[] bagaimanapun juga tidak akan tersedia , jadi tidak ada gunanya untuk fungsi ini.

Jadi Anda lihat, tidak ada kasus penggunaan untuk rowCount[] atau permintaan tambahan untuk menggantinya, seperti yang disarankan dalam jawaban yang diterima. 

Saya akhirnya menggunakan ini:

$result = $db->query[$query]->fetchAll[];

if [count[$result] > 0] {
    foreach [$result as $row] {
        echo $row['blah'] . '
'; } } else { echo "

Nothing matched your query.

"; }

Posting ini sudah tua tetapi Mendapatkan jumlah baris dalam php dengan PDO sederhana

$stmt = $db->query['SELECT * FROM table'];
$row_count = $stmt->rowCount[];

Ini adalah pos lama, tetapi frustrasi mencari alternatif. Sangat disayangkan bahwa PDO tidak memiliki fitur ini, terutama karena PHP dan MySQL cenderung berjalan seiring. 

Ada cacat yang disayangkan dalam menggunakan fetchColumn [] karena Anda tidak dapat lagi menggunakan set hasil tersebut [secara efektif] karena fetchColumn [] memindahkan jarum ke baris berikutnya. Jadi misalnya, jika Anda memiliki hasil yang mirip dengan 

  1. Buah-> Pisang
  2. Buah-> Apple
  3. Buah-> Jeruk

Jika Anda menggunakan fetchColumn [] Anda dapat menemukan bahwa ada 3 buah yang dikembalikan, tetapi jika Anda sekarang mengulang hasilnya, Anda hanya memiliki dua kolom, Harga fetchColumn [] adalah hilangnya kolom hasil pertama hanya untuk menemukan berapa banyak baris yang dikembalikan. Itu mengarah ke pengkodean yang ceroboh, dan benar-benar kesalahan hasil yang ditunggangi jika diterapkan. 

Jadi sekarang, menggunakan fetchColumn [] Anda harus mengimplementasikan dan panggilan yang sama sekali baru dan permintaan MySQL hanya untuk mendapatkan set hasil kerja yang baru. [yang semoga tidak berubah sejak permintaan terakhir Anda], saya tahu, tidak mungkin, tetapi itu bisa terjadi. Selain itu, overhead kueri ganda pada semua validasi jumlah baris. Yang untuk contoh ini kecil, tetapi menguraikan 2 juta baris pada kueri yang digabungkan, bukan harga yang menyenangkan untuk dibayar. 

Saya suka PHP dan mendukung semua orang yang terlibat dalam pengembangannya serta masyarakat luas menggunakan PHP setiap hari, tetapi sangat berharap ini dibahas dalam rilis mendatang. Ini 'benar-benar' satu-satunya keluhan saya dengan PHP PDO, yang sebaliknya adalah kelas hebat.

Menjawab ini karena saya sudah terjebak dengan itu sekarang mengetahui ini dan mungkin itu akan berguna. 

Ingatlah bahwa Anda tidak dapat mengambil hasil dua kali. Anda harus menyimpan hasil pengambilan ke dalam array, dapatkan jumlah baris dengan count[$array], dan hasil keluaran dengan foreach. Misalnya:

$query = "your_query_here";
$STH = $DBH->prepare[$query];
$STH->execute[];
$rows = $STH->fetchAll[];
//all your results is in $rows array
$STH->setFetchMode[PDO::FETCH_ASSOC];           
if [count[$rows] > 0] {             
    foreach [$rows as $row] {
        //output your rows
    }                       
}

Jika Anda hanya ingin mendapatkan hitungan baris [bukan data] yaitu. menggunakan COUNT [*] dalam pernyataan yang disiapkan maka yang perlu Anda lakukan adalah mengambil hasilnya dan membaca nilainya:

$sql = "SELECT count[*] FROM `table` WHERE foo = bar";
$statement = $con->prepare[$sql]; 
$statement->execute[]; 
$count = $statement->fetch[PDO::FETCH_NUM]; // Return array indexed by column number
return reset[$count]; // Resets array cursor and returns first value [the count]

Sebenarnya mengambil semua baris [data] untuk melakukan penghitungan sederhana adalah pemborosan sumber daya. Jika set hasil besar, server Anda mungkin tersedak.

Untuk menggunakan variabel dalam kueri, Anda bisa bindValue[] atau bindParam[]Untuk menggunakan variabel dalam kueri Anda harus menggunakan bindValue[] atau bindParam[]. Dan jangan menyatukan variabel dengan " . $variable . "

$statement = "SELECT count[account_id] FROM account
                  WHERE email = ? AND is_email_confirmed;";
$preparedStatement = $this->postgreSqlHandler->prepare[$statement];
$preparedStatement->bindValue[1, $account->getEmail[]];
$preparedStatement->execute[];
$numberRows= $preparedStatement->fetchColumn[];

GL

Ketika soal mysql bagaimana cara menghitung atau dapatkan berapa baris dalam tabel dengan PHP PDO Saya menggunakan ini

// count total number of rows
$query = "SELECT COUNT[*] as total_rows FROM sometable";
$stmt = $con->prepare[$query];

// execute query
$stmt->execute[];

// get total rows
$row = $stmt->fetch[PDO::FETCH_ASSOC];
$total_rows = $row['total_rows'];

kredit jatuh ke Mike @ codeofaninja.com

Ada solusi sederhana. Jika Anda menggunakan PDO terhubung ke DB Anda seperti ini:

try {
    $handler = new PDO['mysql:Host=localhost;dbname=name_of_your_db', 'your_login', 'your_password']; 
    $handler -> setAttribute[PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION];
} 
    catch [PDOException $e] {   
    echo $e->getMessage[];
}

Kemudian, permintaan ke DB adalah:

$query = $handler->query["SELECT id FROM your_table WHERE ..."];

Dan akhirnya, untuk menghitung baris yang cocok dengan kueri Anda tulis seperti ini 

$amountOfRows = $query->rowcount[];

Apa itu Count di PHP?

Fungsi array count[] PHP Fungsi count[] mengembalikan jumlah elemen dalam sebuah array.

Apa Fungsi count pada SQL?

Menghitung jumlah rekaman yang dikembalikan oleh kueri.

Apa itu Count dalam pemrograman?

Count [] adalah fungsi bawaan dengan Python. Ini akan mengembalikan jumlah total elemen yang diberikan dalam sebuah string. Penghitungan dimulai dari awal string sampai akhir. Dimungkinkan juga untuk menentukan indeks awal dan akhir dari tempat Anda ingin memulai pencarian.

Apa itu distinct count?

COUNT_DISTINCT menampilkan total jumlah item unik dalam kolom atau ekspresi tersebut. Untuk menghitung semua item, termasuk duplikat, gunakan COUNT .

Bài mới nhất

Chủ Đề