如何调试php/mysql count(id)返回1而不是total entries值

ukxgm1gy  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(345)

我需要数据库中的条目总数。
问:为什么行“print\r($rows)”返回“array([count(id)]=>79)”而行“$recordcount=count($row);“回音”
记录计数=“$“记录计数;”返回“记录计数=1”。
我已经尝试了大量不同版本的代码,但我不能在这里全部键入,否则要花很长时间才能阅读。下面是代码的当前版本,它给了我上面提到的意外结果:

// create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// check connection
if ($conn->connect_error) {
die("connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM games ORDER BY id DESC LIMIT $startRow, $rowsPerPage";
$result = $conn->query($sql);

$sql = "SELECT COUNT(id) FROM games";
$results = $conn->query($sql);
$row = $results->fetch_assoc();
print_r($row);
$recordCount = Count($row);
echo "<br/> record count = " . $recordCount;

$totalPages = ceil($recordCount / $rowsPerPage);
$pagination = "<div class='pagination'>";

for ($i = 0; $i <= $totalPages; $i++) {
  $pagination .= "<a href='index.php?page=" . $i . "'>" . $i . "</a>";
  echo 'wtf!';
}

$pagination .= "</div>";
echo ' <br/> pagination = ' . $pagination;

多亏了各位英雄,我现在已经纠正了这一点:如果2018年有人在网上阅读并发现许多不正确的实现:

$sql = "SELECT COUNT(id) as countid FROM games";
$results = $conn->query($sql);
$row = $results->fetch_assoc();

$recordCount = $row["countid"]; // the countid gives me the total i expected :DDDD
echo "<br/> record count = " . $recordCount;
fd3cxomn

fd3cxomn1#

row 是一个关联数组,结果集中的每一列都有一个条目。因为那里只有一个纵队, count($row) 退货 1 . 相反,您应该只访问其中的唯一列:

$row = $results->fetch_assoc();
$recordCount = $row["COUNT(id)"];
avkwfej4

avkwfej42#

是的,您可以为列设置别名,以便将其用作关联数组中的键,或者因为您已经知道此语句:

1.$results = $conn->query($sql); looks something like this:
+-----------+
| count(id) |
+-----------+
|        13 |
+-----------+
1 row in set (0.01 sec)

2.$row = $results->fetch_assoc();returns an array with 1 element

所以,您可以只写$recordcount=$row[0];去拿那个伯爵。
上面的答案也是正确的,但我想让你知道这个直接的,备用的方法,以防你忘记化名的任何原因!

相关问题