Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać liczbę wierszy w tabeli MySQL za pomocą PHP?

Masz kilka opcji, jak uzyskać wartość COUNT(*) z SQL. Najłatwiejsze trzy są prawdopodobnie takie:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

lub używając aliasu kolumny:

$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

lub używając tablicy numerycznej:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

Jeśli używasz PHP 8.1, możesz to zrobić jeszcze prościej:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_column($result);
echo $count;
// or using OO style
echo $con->query("SELECT COUNT(*) FROM news")->fetch_column();

Nie używaj mysqli_num_rows aby policzyć rekordy w bazie danych, zgodnie z sugestiami w niektórych miejscach w sieci. Ta funkcja jest bardzo mało przydatna, a liczenie rekordów zdecydowanie do nich nie należy. Korzystanie z mysqli_num_rows prosiłbyś MySQL o pobranie wszystkiego dopasowywanie rekordów z bazy danych, co może być bardzo zasobochłonne. O wiele lepiej jest delegować zadanie liczenia rekordów do MySQL, a następnie po prostu uzyskać zwróconą wartość w PHP, jak pokazano w mojej odpowiedzi.

Polecam również nauczyć się OOP, dzięki czemu Twój kod będzie czystszy i łatwiejszy do odczytania. To samo z OOP można zrobić w następujący sposób:

$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

Jeśli twoje zapytanie używa zmiennych, możesz zrobić podobną rzecz, ale używając przygotowanych instrukcji.

$sql = "SELECT COUNT(*) FROM news WHERE category=?";
$stmt = $con->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$count = $stmt->get_result()->fetch_row()[0];
echo $count;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Inner Join – Jak połączyć 3 tabele w SQL i MySQL

  2. czy istnieje funkcja group_concat w ms-access?

  3. Czy nazwy tabel w MySQL rozróżniają wielkość liter?

  4. Wstaw do wielu tabel w jednym zapytaniu

  5. Jak wyświetlić wiersze nieobecne w innej tabeli w MySQL?