Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算MySQL中的行数_Php_Sql - Fatal编程技术网

Php 计算MySQL中的行数

Php 计算MySQL中的行数,php,sql,Php,Sql,我在数桌子上的行时遇到了麻烦。我想数一数有多少行的question\u id与$id相同。但是,当我回显$total\u records时,结果仅为1 我期待21岁。我完全确信变量和数据库信息是正确的。谁能解释一下我做错了什么 $sqlwow="SELECT COUNT(a_id) FROM forum_answer WHERE question_id='$id' ORDER BY a_id DESC"; $rsresult = $m

我在数桌子上的行时遇到了麻烦。我想数一数有多少行的
question\u id
$id
相同。但是,当我回显
$total\u records
时,结果仅为1

我期待21岁。我完全确信变量和数据库信息是正确的。谁能解释一下我做错了什么

$sqlwow="SELECT COUNT(a_id) 
         FROM forum_answer 
         WHERE question_id='$id' 
         ORDER BY a_id DESC"; 
$rsresult = $mysqli->query($sqlwow);
$row=$rsresult->fetch_assoc();
$total_records = count($row);
echo $total_records;
count($row)
将始终为1。您需要在SQL语句中别名您的计数:

$sqlwow="SELECT COUNT(a_id) as num_records 
          FROM forum_answer 
          WHERE question_id='$id'
          ORDER BY a_id DESC";
然后将其作为:

$total_records=$row['num_records']

echo$total\u记录

计数($row)
将始终为1。您需要在SQL语句中别名您的计数:

$sqlwow="SELECT COUNT(a_id) as num_records 
          FROM forum_answer 
          WHERE question_id='$id'
          ORDER BY a_id DESC";
$sqlwow="SELECT COUNT(*) 
         FROM forum_answer 
         WHERE question_id='$id' 
         ORDER BY a_id DESC"; 
$rsresult = $mysqli->query($sqlwow);
$row = $rsresult->fetch_row();
$total_records = $row[0];
然后将其作为:

$total_records=$row['num_records']

echo$total\u记录

计数($row)
将始终为1。您需要在SQL语句中别名您的计数:

$sqlwow="SELECT COUNT(a_id) as num_records 
          FROM forum_answer 
          WHERE question_id='$id'
          ORDER BY a_id DESC";
$sqlwow="SELECT COUNT(*) 
         FROM forum_answer 
         WHERE question_id='$id' 
         ORDER BY a_id DESC"; 
$rsresult = $mysqli->query($sqlwow);
$row = $rsresult->fetch_row();
$total_records = $row[0];
然后将其作为:

$total_records=$row['num_records']

echo$total\u记录

计数($row)
将始终为1。您需要在SQL语句中别名您的计数:

$sqlwow="SELECT COUNT(a_id) as num_records 
          FROM forum_answer 
          WHERE question_id='$id'
          ORDER BY a_id DESC";
$sqlwow="SELECT COUNT(*) 
         FROM forum_answer 
         WHERE question_id='$id' 
         ORDER BY a_id DESC"; 
$rsresult = $mysqli->query($sqlwow);
$row = $rsresult->fetch_row();
$total_records = $row[0];
然后将其作为:

$total_records=$row['num_records']

echo$total\u记录

$sqlwow="SELECT COUNT(*) 
         FROM forum_answer 
         WHERE question_id='$id' 
         ORDER BY a_id DESC"; 
$rsresult = $mysqli->query($sqlwow);
$row = $rsresult->fetch_row();
$total_records = $row[0];
当您只有一列时,不应获取关联结果。PDO实际上有一个快捷方式,只需使用
fetchColumn
获取第一列。MySQLi似乎没有这个快捷方式,因此您可以将整行作为数字数组获取,然后返回该数组中的第一个结果(第一列),这将是计数

您还应该只使用
count(*)
count(1)
。使用列名的速度较慢,因为它不检查返回了多少行,而是检查返回了该列的多少个非空值。在大多数情况下,这是相同的,特别是如果该列是主键。感谢@fthiella的澄清

当您只有一列时,不应获取关联结果。PDO实际上有一个快捷方式,只需使用
fetchColumn
获取第一列。MySQLi似乎没有这个快捷方式,因此您可以将整行作为数字数组获取,然后返回该数组中的第一个结果(第一列),这将是计数

您还应该只使用
count(*)
count(1)
。使用列名的速度较慢,因为它不检查返回了多少行,而是检查返回了该列的多少个非空值。在大多数情况下,这是相同的,特别是如果该列是主键。感谢@fthiella的澄清

当您只有一列时,不应获取关联结果。PDO实际上有一个快捷方式,只需使用
fetchColumn
获取第一列。MySQLi似乎没有这个快捷方式,因此您可以将整行作为数字数组获取,然后返回该数组中的第一个结果(第一列),这将是计数

您还应该只使用
count(*)
count(1)
。使用列名的速度较慢,因为它不检查返回了多少行,而是检查返回了该列的多少个非空值。在大多数情况下,这是相同的,特别是如果该列是主键。感谢@fthiella的澄清

当您只有一列时,不应获取关联结果。PDO实际上有一个快捷方式,只需使用
fetchColumn
获取第一列。MySQLi似乎没有这个快捷方式,因此您可以将整行作为数字数组获取,然后返回该数组中的第一个结果(第一列),这将是计数



您还应该只使用
count(*)
count(1)
。使用列名的速度较慢,因为它不检查返回了多少行,而是检查返回了该列的多少个非空值。在大多数情况下,这是相同的,特别是如果该列是主键。感谢@fthiella的澄清。

尝试添加
echo$total\u页面$total\u pages
的值。它显示0。因此,获取$total_页面有问题吗?如果更改
$total_记录=@$row[0]
$total_records=计数($row)没有区别。我回显$total_记录,它说1.你的GET语句在哪里?尝试添加
echo$total_页面$total\u pages
的值。它显示0。因此,获取$total_页面有问题吗?如果更改
$total_记录=@$row[0]
$total_records=计数($row)没有区别。我回显$total_记录,它说1.你的GET语句在哪里?尝试添加
echo$total_页面$total\u pages
的值。它显示0。因此,获取$total_页面有问题吗?如果更改
$total_记录=@$row[0]
$total_records=计数($row)没有区别。我回显$total_记录,它说1.你的GET语句在哪里?尝试添加
echo$total_页面$total\u pages
的值。它显示0。因此,获取$total_页面有问题吗?如果更改
$total_记录=@$row[0]
$total_records=计数($row)没有区别。我回显了$total_记录,它说1。GET语句在哪里?COUNT(*)将对行进行计数,而COUNT(a_id)将对a_id不为null的所有行进行计数,因此它实际上对结果有影响,但这取决于OP的值intention@fthiella,谢谢你的澄清。从问题的措辞来看,我认为这不是OP的意图,因此
count(*)
可能更准确