【问题标题】:With mysql_fetch_array I can easily count the rows returned. Can I do something similar with mysql_fetch_object?使用 mysql_fetch_array 我可以轻松计算返回的行数。我可以用 mysql_fetch_object 做类似的事情吗?
【发布时间】:2011-06-03 01:18:16
【问题描述】:

(如有必要,请道歉——我的第一个 Stack Overflow 问题。如果有人有建议,我很乐意对其进行修改。我一直在寻找答案,但恐怕我对术语的掌握还不够好进行完整的搜索。)

我习惯于使用 mysql_fetch_array 从数据库中获取记录。 当以这种方式获取记录时,mysql_num_rows 会给我行数。 然而,在我当前的项目中,我使用的是 mysql_fetch_object。 mysql_num_rows 似乎不适用于此函数,当我对查询结果进行“计数”时,我得到了预期的答案:1(一个对象)。

有没有办法“看到”对象并计算其中的元素?

【问题讨论】:

  • 不错,但你应该放弃 mysql_* 函数,用 mysqli、pdo 替换它(mysqli->num_rows 是一个设置为返回行数的属性)

标签: php mysql oop mysql-num-rows


【解决方案1】:

mysql_num_rows 函数适用于您的结果资源,而不是您的对象行。

示例

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$sql = "SELECT id, name FROM myTable";

$result = mysql_query($sql, $link);

$rowCount = mysql_num_rows($result);

while($row = mysql_fetch_object){
    echo "id: ".$row->id." name: ".$row->name."<BR>";
}
echo "total: ".$rowCount;

【讨论】:

  • 我认为您的while() 中的mysql_fetch_object 实际上应该是mysql_fetch_object($result)
【解决方案2】:

试试count( (array)$object )

【讨论】:

  • 这给了我不同的答案。它返回了我的 SELECT 查询中的字段数。
【解决方案3】:

如果您以程序方式使用它(即 mysql_fetch_object() 与 $result->fetch_object()),mysql_num_rows 的工作方式应该与使用 mysql_fetch_array() 时完全相同。你能发布一些示例代码吗?

【讨论】:

  • 我以这种方式使用它(程序风格)。我不应该吗?
  • 不,在程序上使用它是可以的。您可以发布您的代码的 sn-p 吗?
  • 此时代码已经发生了如此大的变化,以至于不再相关。感谢您的提问。
【解决方案4】:
<?php
mysql_connect("localhost", "user", "password");
mysql_select_db("database");

$result = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM table");
$countQuery = mysql_query("SELECT found_rows() AS totalRows");
$rows = mysql_fetch_object($countQuery);
echo $rows->totalRows;
?>

我希望这是有用的:)

【讨论】:

  • 这很有趣(我不知道这种 SELECT SQL_CALC_FOUND_ROWS),但除了计算行数之外,我还想做其他事情。
猜你喜欢
  • 2015-11-17
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
相关资源
最近更新 更多