首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何进行my_sql计数

如何进行my_sql计数
EN

Stack Overflow用户
提问于 2013-08-21 13:18:41
回答 1查看 92关注 0票数 0

当我试图得到这个查询的计数时,我遇到了一个问题。

代码语言:javascript
运行
复制
$query = "SELECT COUNT(*) AS counter FROM (";
$query .= "SELECT *, GROUP_CONCAT(orders.product) as PRO FROM id_of_orders,orders WHERE 1=1 AND orders.order_id = id_of_orders.id_order";
if(!empty($_SESSION['employees']))
  $query .= " AND id_of_orders.username='$_SESSION[employees]'";
if(!empty($_SESSION['timis']))
  $query .= " AND id_of_orders.price='$_SESSION[timis]'";
if(!empty($_SESSION['dates']))
  $query .= " AND DATE(time)='$_SESSION[dates]'";

$query .= " GROUP BY id_order " ;
$query .= " LIMIT $offset, $rec_limit )" ;
    $result = mysql_query($query);


$row = mysql_fetch_array($result);
$counter = $row['counter'];
echo $counter . '<br>' ; 

while($row = mysql_fetch_array($result))
    {
        echo $row['id_order'] . ": -> " . $row['time']. " " .$row['username'] . " " . $row['price'] . " " . $row['PRO'] . '<br>';
    }

从这个查询中,我没有从$echo计数器获得任何信息。

产出:

代码语言:javascript
运行
复制
11: -> 2013-08-18 17:29:39 skata 1.00 eee
35: -> 2013-08-11 15:03:01 0.00 frento,frento,frento,frapes
36: -> 2013-08-21 12:43:31 skata 0.00 frapes
37: -> 2013-08-21 12:43:55 skata 12.00 frento

如果我尝试这个查询:

代码语言:javascript
运行
复制
$query = "SELECT *,  COUNT(id_order) AS counter, GROUP_CONCAT(orders.product) as PRO FROM id_of_orders,orders WHERE 1=1 AND orders.order_id = id_of_orders.id_order";
        if(!empty($_SESSION['employees']))
          $query .= " AND id_of_orders.username='$_SESSION[employees]'";
        if(!empty($_SESSION['timis']))
          $query .= " AND id_of_orders.price='$_SESSION[timis]'";
        if(!empty($_SESSION['dates']))
          $query .= " AND DATE(time)='$_SESSION[dates]'";

        $query .= " GROUP BY id_order " ;
        $query .= " LIMIT $offset, $rec_limit" ;

$row = mysql_fetch_array($result);
$counter = $row['counter'];
echo $counter . '<br>' ; 

while($row = mysql_fetch_array($result))
    {
        echo $row['id_order'] . ": -> " . $row['time']. " " .$row['username'] . " " . $row['price'] . " " . $row['PRO'] . '<br>';
    }

产出:

代码语言:javascript
运行
复制
1 // <~~~ this is the echo $counter
11: -> 2013-08-18 17:29:39 skata 1.00 eee
35: -> 2013-08-11 15:03:01 0.00 frento,frento,frento,frapes
36: -> 2013-08-21 12:43:31 skata 0.00 frapes
37: -> 2013-08-21 12:43:55 skata 12.00 frento

我得到1,这是假的。

以下是表: id_of_orders:

代码语言:javascript
运行
复制
id_order| time              | username | price
35      |2013-08-11 15:03:01|          |0.00
36      |2013-08-21 12:43:31|skata     |0.00
37      |2013-08-21 12:43:55|skata     |12.00

命令:

代码语言:javascript
运行
复制
order_id  | product |   ulika   
35        |frento   |zaxari,fountoukia,troufa
35        |frento   |zaxari,kakao
35        |frento   |
36        |frapes   |zaxari
37        |frento   |
35        |frapes   |

只需查询:

代码语言:javascript
运行
复制
$query = (" SELECT *, GROUP_CONCAT(orders.product) as PRO 
FROM id_of_orders,orders 
WHERE 1=1 
AND orders.order_id = id_of_orders.id_order 
AND id_of_orders.username='$_SESSION[employees] 
AND id_of_orders.price='$_SESSION[timis]' 
AND DATE(time)='$_SESSION[dates]' 
GROUP BY id_order 
LIMIT $offset, $rec_limit ");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-21 13:38:27

与其尝试计数所有记录并在同一个查询中返回它们,不如使用mysql_num_rows I.即:

代码语言:javascript
运行
复制
    $counter = mysql_num_rows($result);
    echo $counter . '<br>' ; 

    while($row = mysql_fetch_array($result)){
        echo $row['id_order'] . ": -> " . $row['time']. " " .$row['username'] . " " . $row['price'] . " " . $row['PRO'] . '<br>';
    }

也要注意。PHP5.5.0中不推荐使用mysql_*函数,并将在将来的某个时候删除这些函数。考虑切换到PDO或mysqli,特别是对于新代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18358554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档