查询中的循环错误

时间:2012-03-03 07:48:16

标签: php mysql

我想从数据库中搜索数据 用户为此放置了多少个出价我必须首先从表tbl_members中搜索成员ID而不是从该成员ID中搜索来自表tbl_bids的出价 然后从tbl_bids我也得到product_id意味着在哪个产品ID上放置出价然后根据此产品ID和从tbl_products获取产品名称

这是我的过程代码

 fkdslfsd

FD SF DS FDS F SD fdsgfhfgfghfgh GF HFG

fgbfd bfdb VCB VCB VCB 虚电路 b CB F gfdg FDG FDG FD GDF G FDG FD GDF

我得到了所有的东西,但只是出现了错误,产品和所有内容都根据出价而重复

请在这里查看 www.snapbid.in/make/dashboard.php

并搜索damodar,并查看他的详细信息

2 个答案:

答案 0 :(得分:0)

看起来您为每个出价而不是每个拍卖输出一行(这是我认为您想要的)。我无法发布您的代码的更新版本,因为您的代码很乱。以下是一些提示:

  • 请发布格式良好的代码,以便人们可以帮助您。没有人愿意像上面那样使用代码,
  • 请阅读SQL injection。切勿在查询中直接使用代码外部的值($ _GET和$ _POST等)。如果你期望一个至少使用intval()的整数,
  • mysql_函数被认为有些不赞成。最好使用mysqli_甚至更好的PDO并绑定参数,
  • 请阅读JOINS。在循环中进行多个SQL查询是一个很好的主意。

例如,您可以将示例中的所有查询重写为类似的内容。

SELECT
    a.auction_id,
    a.auction_startdate,
    a.auction_enddate,
    p.product_name,
    p.product_price,
    COUNT( DISTINCT b.bid_id) as num_bids
FROM
    tbl_auctions a
    INNER JOIN
        tbl_products p ON a.product_id=p.product_id
    INNER JOIN
        tbl_bids b ON a.auction_id=b.auction_id
WHERE
    b.member_id = $member_id
GROUP BY
    a.auction_id

答案 1 :(得分:0)

根据@liquorvicar的建议,您应该使用单个查询返回所有这些数据。他唯一缺少的是GROUP BY子句 -

SELECT
    a.auction_id,
    a.auction_startdate,
    a.auction_enddate,
    p.product_name,
    p.product_price,
    COUNT(b.bid_id) as num_bids
FROM
    tbl_auctions a
INNER JOIN
    tbl_products p ON a.product_id=p.product_id
INNER JOIN
    tbl_bids b ON a.auction_id=b.auction_id
WHERE
    b.member_id = $member_id
GROUP BY
    a.auction_id,
    a.auction_startdate,
    a.auction_enddate,
    p.product_name,
    p.product_price;