виберіть кількість (*) із таблиці mysql у php


93

Я можу отримати як значення, так і рядок результату запиту 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);зберігає одну непотрібну змінну
Max Muster

Правильний; моя відповідь була адаптована до запитання.
bmaupin

4
@eichertc, інтерпретатор php має змінну завжди внутрішню, оскільки йому потрібно мати результат в пам'яті так чи інакше. Отже, ваш спосіб просто полегшує читання та підтримку коду, IMHO.
Том

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

Третій рядок поверне структуру, яка виглядає так:

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

У цьому випадку повернеться кінцевий оператор echo:

1570

1

Я думаю, що у вашому коді є друкарська помилка, і вам слід видалити другу до останньої крапки в:

$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

Я вважаю, що якщо цей варіант працює, навіть якщо він не є оптимальним у певних термінах, він може допомогти комусь вирішити свою проблему. Що стосується мене, я часто знаходжу відповіді та ще частіше ідеї, які працюють для мене, у відповідях, які не позначені як "найкраща відповідь". І іноді такі "дивні рішення" виявляють логіку ідеї, яку можна використати. Піклуватися!
Юрій Гаманець,

1
Будьте співчутливі до дослідників, які намагаються визначити найкращу відповідь для свого проекту і не мають часу витрачати даремно. Дослідники НЕ хочуть читати 18 дуже схожих рішень - вони хочуть якнайшвидше знайти найкращу відповідь. Більше ніхто не повинен використовувати mysql_функції - навіть якщо це старе запитання використовує її. У моїй IDE міститься прапор із зазначенням, що $numbможе не оголошуватися. Використання циклу вже було зроблено PushkarPokharkar, але знову це не потрібно. Я зроблю свою частину, щоб допомогти дослідникам, відмовившись від методів, які я не рекомендую.
mickmackusa

1
Це НЕ особистий напад на вас. Це моє судження про якість цієї публікації.
mickmackusa

-4

Якщо вам потрібне лише значення підрахунку, ви можете зробити скорочення:

$cnt = mysql_num_rows(mysql_query('select * from students'));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.