我正在尝试使用mysqli_num_rows显示表中的行数。当我打印结果时,它说我只有一行,当我真的有几行时。
当我在phpMyAdmin中测试SQL时,它会计算正确的行数。但是当我在我的网页上显示结果时,它只计算一行。
请帮帮我。我做错了什么?
$mysqli = new mysqli("localhost", "myusername", "mypass", "mydatabase");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($result = $mysqli->query("SELECT COUNT(*) FROM mytable")) {
/* determine number of rows result set */
$row_cnt = $result->num_rows;
printf("Result set has %d rows.\n", $row_cnt);
/* close result set */
$result->close();
}
/* close connection */
$mysqli->close();
无论我有多少行,上面的代码都会打印出以下内容:
结果集有1行。
答案 0 :(得分:3)
简单COUNT(*)
语句的结果总是一行。您想要获取该行并获取从第一列返回的值。
答案 1 :(得分:1)
实际上,当您使用 COUNT 时,查询的结果就是行数。 我经常尝试直接将SQL查询写入 phpmyadmin 以查看会发生什么。它会揭示错误;)
答案 2 :(得分:0)
如果数据库很小,你可以这样做。
if ($result = $mysqli->query("SELECT * FROM mytable")) {
/* determine number of rows result set */
$row_cnt = $result->num_rows;
printf("Result set has %d rows.\n", $row_cnt);
/* close result set */
$result->close();
}
使用我的大数据库,您可以像评论中提到的那样这样做。我对PDO或面向对象的请求不太满意,所以这将是程序性的。
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT COUNT(*) FROM users";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result)){
$row = mysqli_fetch_row($result);
printf("Result set has %d rows.\n", $row[0]);
}
mysqli_close($conn);
答案 3 :(得分:0)
<?php
$mysqli = new mysqli("localhost", "myusername", "mypass", "mydatabase");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql="SELECT * FROM mytable";
if ($result=mysqli_query($con,$sql))
{
// Return the number of rows in result set
$rowcount=mysqli_num_rows($result);
printf("Result set has %d rows.\n",$rowcount);
// Free result set
mysqli_free_result($result);
}
mysqli_close($con);
?>
使用mysqli_num_rows()方法获取结果集中的行数。