簡體   English   中英

PHP mysqli_num_rows() 函數不起作用

[英]PHP mysqli_num_rows() Function not working

我已經復制了用於執行 mysqli 行計數函數的 W3 學校代碼,但是當我輸入變量時,返回的結果始終為“1”。 我已經通過直接將其輸入到 phpMyAdmin 中檢查了我的 SQL 代碼,它返回了正確的結果。

這是我的代碼:

<?php
$con = mysqli_connect("x", "x", "x", "x");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql="SELECT COUNT(*) FROM `Existing_Bookings`";

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);
?>

我只是想知道是否有人可以看到這背后的任何明顯原因? 我的服務器運行的是 PHP 5.6,這就是為什么我確保我使用的是 mysqli,而不是 mysql。

如果表中有任何行,選擇count(*)將始終只返回一行(如您所見)。 該行的內容包含您查詢的實際計數:

$sql="SELECT COUNT(*) FROM `Existing_Bookings`";

if ($result = mysqli_query($con,$sql)) {

  // Return the number of rows in result set
  $row = mysqli_fetch_array($result, MYSQLI_NUM);

  printf("Table has %d rows.\n", $row[0]);

  // Free result set
  mysqli_free_result($result);
}

mysqli_close($con);

您的查詢正在計算 Bookings 的數量,該數量將始終返回包含計數的 1 行。 mysqli_num_rows 將為您提供行數,因此在這種情況下它將始終為 1。

快速修復:將 sql 更改為SELECT * FROM Existing_Bookings

更好的修復:檢查檢查以讀取行: $row = mysqli_fetch_row($result)然后 $row[0] 將包含計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM