-1

我正在尝试使用 count() 函数计算从表中选择的行数。但它总是为每个选择了一行/行的查询返回一个“2”,或者为每个没有选择行的查询返回一个“1”。

 $sql_usb="select item_name from req_item where item_name='USB Dongle'";
 $result_usb=mysql_query($sql_usb);
 $row_usb=mysql_fetch_array($result_usb);

 $sql_router="select item_name from req_item where item_name='Access Point/Router'";
 $result_router=mysql_query($sql_router);
 $row_router=mysql_fetch_array($result_router);

 $sql_laptop="select item_name from req_item where item_name='Laptop'";
 $result_laptop=mysql_query($sql_laptop);
 $row_laptop=mysql_fetch_array($result_laptop);

 $usb_inv=count($row_usb);
 $router_inv=count($row_router);
 $laptop_inv=count($row_laptop);


 $total_inv=$usb_inv+$router_inv+$laptop_inv;

我也尝试添加 isset() (ie $usb_inv=count(isset($row_usb));) 和 mysql_num_rows() (ie $usb_inv=mysql_num_rows($row_usb));)

两者都给出 1 的结果。

4

5 回答 5

1

你应该使用

SELECT COUNT(*) WHERE ....

检查文档

如果只需要总数,那么只需要 1 个 sql 就足够了。

// please add error handing yourself.
$sql = "select count(*) from req_item where item_name
        where item_name in('USB Dongle', 'Access Point/Router', 'Laptop')";
$result = mysql_query($sql);
$row = mysql_fetch_array($result)
$total = $row[0];
于 2012-06-04T05:43:06.647 回答
0

你应该在结果集上使用 mysql_num_rows 。

像这样。

$usb_inv=mysql_num_rows($result_usb);
$router_inv=mysql_num_rows($result_router);
$laptop_inv=mysql_num_rows($result_laptop);

这会给你正确的输出。

于 2012-06-04T05:47:30.973 回答
0

你应该使用

$usb_inv = mysql_num_rows($result_usb);

代替

$usb_inv=count($row_usb);
于 2012-06-04T05:49:44.680 回答
0

mysql_fetch_array 正在返回类似

$row[0] = ...;
$row[item_name] = ...;

如果您使用数组的计数,它将始终返回一个 2,
因为它返回一个包含索引和关联键的数组。

数组 mysql_fetch_array ( 资源 $result [, int $result_type = MYSQL_BOTH ] )

mysql_fetch_array — 以关联数组、数值数组或两者的形式获取结果行

尽管 mysql_fetch_array 使用错误,
你可能应该只使用一个查询

$sql ="select item_name from req_item 
       where item_name in('USB Dongle', 'Access Point/Router', 'Laptop')";

之后,

$count = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
  // do something else ...

  // to get count for each item name
  $count[$row["item_name"]]++;
}
于 2012-06-04T05:50:07.423 回答
0

你必须像这样在你的mysql查询中使用count

$SelectQuery = 'select Count(item_name) as [TotalUSB] from req_item where item_name='USB Dongle'

然后你可以得到结果

$result = mysql_query($SelectQuery);
$row = mysql_fetch_array($result);

$USBCount = $row['TotalUSB'];
于 2012-06-04T05:50:25.800 回答