从php中的mysql表中选择count(*)


92

我能够同时获取mysql查询结果的值和行。

但是我在努力获得查询的单个输出。例如:

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

我需要显示结果。但是我没有得到结果。

我尝试了以下方法:

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

但是我没有成功显示(获取)实际值。


8
现在,您应该正在使用PDO
Lucio 2013年

Answers:


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版本之后,此查询将不起作用,只需将mysqli替换为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解释器的变量始终是内部变量,因为他需要将结果以一种或另一种方式存储在内存中。因此,恕我直言,您的方式只会使代码更难以阅读和维护。
汤姆(Tom)

14
$result = mysql_query("SELECT COUNT(*) AS `count` FROM `Students`");
$row = mysql_fetch_assoc($result);
$count = $row['count'];

试试这个代码。


10

请开始使用PDO。

从PHP 5.5.0开始不推荐使用mysql_ *,它将在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

我认为,即使该选项在某些方面不是最佳选择也能奏效,它可以帮助某人解决他们的问题。对于我来说,我经常在没有标记为“最佳答案”的答案中找到答案,甚至更多的想法对我有用。有时,这种“奇怪的解决方案”揭示了这种想法被利用的逻辑。照顾自己!
Yury Wallet

1
对于试图为自己的项目确定最佳答案而又没有时间浪费的研究人员,有些同情。研究人员不想阅读18种非常相似的解决方案,而是希望尽快找到最佳答案。没有人应该再使用mysql_函数-即使这个老问题正在使用它。在我的IDE中,会​​有一个标志说明$numb可能未声明。PushkarPokharkar已经完成了使用循环的操作,但同样没有必要。我将尽我所能,通过降低我不推荐使用的技术来帮助研究人员。
mickmackusa

1
这不是对您的人身攻击。这是我对这篇文章的质量的判断。
mickmackusa

-4

如果只希望计数值,可以速记:

$cnt = mysql_num_rows(mysql_query('select * from students'));
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.