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(*)
可能更准确