0

数据库中有三个表:

1-stocks :

`stocks-id | stocks_name | description`

2-Selers :

`Selers-id | Selers_name | message`

3-Stock_Seller: //shows which seller has which stock to sell

`Selers-id | Selers_id`
         

A-用户输入一个词,我们应该在股票表中搜索以找到名称中包含该词的股票并获取其ID

B- 在 stock-seller 表中搜索,找到哪个卖家有这些股票要出售,并获取卖家的消息

C-在 Stocks 表中搜索以查找卖方要出售的股票的描述

D- 打印卖方的信息和他们必须出售的股票,如下所示:

Seller1: Hi we have these requested stocks, call us: 012345678

red shirt sleeve shirt for men, size large price: 23$

blue shirt...

Sellers2: Hi, Have a nice shopping, call us: 0987654321

red short sleeve shirt for men, size large Price: 23$

orange shirt ....

purple shirt ....

我的代码如下:但问题是我无法将每个卖家的消息和库存分开,并且每个库存都打印了多次卖家的消息,并且打印的卖家库存是混合的

我想我应该使用数组,但我不知道如何

function find($name, $name1, $name2, $name3)
{
    global $db;
    //**A**: find stocks which have this word in their name
    $query = "select * from Stoks WHERE  REPLACE(`stocks_name`, '/', '')='" . $name . "'
                                     OR REPLACE(`stocks_name`, '/', '') ='" . $name1 . "'
                                     OR REPLACE(`stocks_name`, '/', '') ='" . $name2 . "'
                                     OR REPLACE(`stocks_name`, '/', '') ='" . $name3 . "'";
    $res = mysqli_query($db, $query);
    $num = mysqli_num_rows($res);
    //    $row = mysqli_fetch_assoc($res);
    $endresult = "";
    while ($row = mysqli_fetch_assoc($res)) //For each Stoks :
    {
        //**B**:find available sellers
        $query2 = "select distinct Selers-id from Stock_Seller WHERE stocks_id=" . $row[stocks_id];
        $res2   = mysqli_query($db, $query2);
        while ($row2 = mysqli_fetch_assoc($res2)) //For each seller
        {
            //**B**: Find sellers message
            $query_Selers = "select * from Selers WHERE Selers_id=" . $row2[Selers_id];
            $res_Selers   = mysqli_query($db, $query_Selers);
            $row_Selers   = mysqli_fetch_assoc($res_Selers);
            $endresult .= $row_Selers[message] . "\r\n";

            //Find stocks description
            $query_stocks = "select * from stocks WHERE stocks_id=" . $row[stocks_id];
            $res_stocks   = mysqli_query($db, $query_stocks);
            $row_stocks   = mysqli_fetch_assoc($res_stocks);
            $endresult .= $row_stocks[description] . "\r\n";
        }
    }
    return urlencode($endresult);
}

它在一条消息中打印卖家 1 的消息和 stock1 的描述,然后是卖家 2 的消息和 stock1 的描述,然后是卖家 1 的消息和 stock2 的描述,然后是卖家 2 的消息和 stock2 的描述,而我想要每个卖家有一条单独的消息,其中包含他们的消息和股票

4

1 回答 1

1

尝试运行我根据上面提供的表结构准备的以下查询以及查找步骤。
我假设red在表格中搜索的单词

SELECT s.stocks-id, s.stocks_name, s.description, sel.Selers-id, sel.Selers_name, sel.message FROM stocks AS s 
INNER JOIN stock_seller AS ss ON ss.stocks_id=s.stocks-id 
INNER JOIN selers AS sel ON sel.Selers-id = ss.Selers-id
WHERE s.stocks_name LIKE '%red%'

如果有任何问题,请在评论中告诉我。

于 2019-05-16T08:13:53.017 回答