выберите количество (*) из таблицы 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);
bmaupin
источник
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;");
SureFoot
источник
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"];
Mohsen
источник
-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'));
Антипроцветающий
источник