PHP - mysqli_num_rows - 说我有很多行

时间:2016-03-28 18:06:38

标签: php mysql

我正在尝试使用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行。

4 个答案:

答案 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()方法获取结果集中的行数。

参考链接http://php.net/manual/en/mysqli-result.num-rows.php