выберите количество (*) из таблицы mysql в php


94

Я могу получить как значение, так и строку результата запроса mysql.

Но я изо всех сил пытаюсь получить единственный результат запроса. например:

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

Мне нужен результат для отображения. Но я не получаю результата.

Я пробовал следующие методы:

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

Но показать (получить) реальное значение не удалось.


8
К настоящему времени вы должны использовать PDO .
Lucio

Ответы:


204

Вам необходимо создать псевдоним агрегата с помощью asключевого слова, чтобы вызвать его изmysql_fetch_assoc

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

8
После версии 5.x этот запрос не будет работать, просто замените mysql на mysqli, чтобы он заработал.
Аджай Верма 02

32

Если вам нужно только значение:

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

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);сохраняет одну ненужную переменную
Макс Мустер

Верный; мой ответ был адаптирован к вопросу.
bmaupin 08

4
@eichertc интерпретатор php всегда имеет внутреннюю переменную, так как ему так или иначе нужно, чтобы результат был в памяти. Таким образом, ваш способ просто ухудшает чтение и поддержку кода, ИМХО.
Tom

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;

5

вот код для отображения количества строк в таблице с 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"
}

В этом случае завершающий оператор эха вернет:

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

Результат:

введите описание изображения здесь


Зачем нужна линия 5? Компилятор / IDE должны предупредить о неиспользуемой переменной $ data.
ManuelJE

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;

0

может быть вам полезно:

$checkValid = "SELECT
                        COUNT(*) as total
                      FROM
                        ". $this->db_table ."
                      WHERE
                        UserName = ?";

      $stmt = $this->conn->prepare($sqlQuery);

      $stmt->bindParam(1, $this->UserName);

      $stmt->execute();

      $dataRow = $stmt->fetch(PDO::FETCH_ASSOC);

      $total = $dataRow["total"];

-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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.