【发布时间】:2018-07-01 10:06:58
【问题描述】:
我需要数据库中的条目总数。
问题:为什么 "print_r($rows)" 行返回 "Array ( [COUNT(id)] => 79 )" 但随后 "$recordCount = Count($row); echo "
记录计数 = " . $recordCount;"返回“记录数 = 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;
【问题讨论】:
-
发布表结构
SHOW CREATE TABLE games -
Count($row)是返回的行数——不是行的内容,试试echo $row["COUNT(id)"]; -
$row是一个仅包含 1 个值的数组,即[COUNT(id)] => 79。我建议您将查询更改为SELECT COUNT(id) total_games FROM games之类的内容,然后使用echo $row['total_games'];访问结果 -
在查询中使用别名更容易。
COUNT(id) as id_count在 PHP 中使用$row['id_count']。在 PHP @NigelRen 中使用$row["COUNT(id)"];有点棘手 -
啊,好吧,我想我明白了:DD ...我也尝试过使用别名,但是当我运行它时说“数组索引无效”
标签: php mysql sql mysqli pagination