有一种使用sql和php使它更简单的方法

问题描述 投票:-3回答:1

我正在使用我的管理员在php上的数据库中的数据生成收据,而我能弄清楚如何做的唯一方法是编写许多这样的sql语句:

我还需要一种方法,能够在HTML页面上使用提交表单来更改订单编号,并使收据更新为相应的项目

$sql = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE orderid =15';
$resultCustomer = mysqli_query($conn, $sql);

while($row = mysqli_fetch_array($resultCustomer, MYSQLI_NUM)) {
    $orderid = $row[0];
    $itemid = $row[1];
    $custid = $row[2];
    $name = $row[3];
    $email = $row[4];
    $address = $row[5];
    $city = $row[6];
    $country = $row[7];
    $date = $row[8];
    $cardnum = $row[9];
    $cardtype = $row[10];
    $totalpay = $row[11];
    $iname = $row[12];
    $unitprice = $row[13];
    $cat = $row[14];
    $quantity = $row[15];
    $totalPrice = $unitprice * $quantity;
}

$sql1 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "chilled" AND orderid = 15';
$resultCustomer1 = mysqli_query($conn, $sql1);
$row1 = mysqli_fetch_assoc($resultCustomer1);

$sql2 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "drinks" AND orderid = 15';
$resultCustomer2 = mysqli_query($conn, $sql2);
$row2 = mysqli_fetch_assoc($resultCustomer2);

$sql3 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "foodcupboard" AND orderid = 15';
$resultCustomer3 = mysqli_query($conn, $sql3);
$row3 = mysqli_fetch_assoc($resultCustomer3);

$sql4 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "fresh" AND orderid = 15';    
$resultCustomer4 = mysqli_query($conn, $sql4);
$row4 = mysqli_fetch_assoc($resultCustomer4);

$sql5 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "frozen" AND orderid = 15';
$resultCustomer5 = mysqli_query($conn, $sql5);
$row5 = mysqli_fetch_assoc($resultCustomer5);

$sql6 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "nonfood" AND orderid = 15';
$resultCustomer6 = mysqli_query($conn, $sql6);
$row6 = mysqli_fetch_assoc($resultCustomer6);

$sql7 = 'SELECT quantity FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "chilled" AND orderid = 15';
$resultCustomer7 = mysqli_query($conn, $sql7);
$row7 = mysqli_fetch_assoc($resultCustomer7);

$sql8 = 'SELECT unitprice FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "chilled" AND orderid = 15';
$resultCustomer8 = mysqli_query($conn, $sql8);
$row8 = mysqli_fetch_assoc($resultCustomer8);

$sql9 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "chilled" AND orderid = 15';
$resultCustomer9 = mysqli_query($conn, $sql9);
$row9 = mysqli_fetch_assoc($resultCustomer9);

$sql10 = 'SELECT quantity FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "drinks" AND orderid = 15';
$resultCustomer10 = mysqli_query($conn, $sql10);
$row10 = mysqli_fetch_assoc($resultCustomer10);

$sql11 = 'SELECT unitprice FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "drinks" AND orderid = 15';
$resultCustomer11 = mysqli_query($conn, $sql11);
$row11 = mysqli_fetch_assoc($resultCustomer11);

$sql12 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "drinks" AND orderid = 15';
$resultCustomer12 = mysqli_query($conn, $sql12);
$row12 = mysqli_fetch_assoc($resultCustomer12);

$sql13 = 'SELECT quantity FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "foodcupboard" AND orderid = 15';
$resultCustomer13 = mysqli_query($conn, $sql13);
$row13 = mysqli_fetch_assoc($resultCustomer13);

$sql14 = 'SELECT unitprice FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "foodcupboard" AND orderid = 15';
$resultCustomer14 = mysqli_query($conn, $sql14);
$row14 = mysqli_fetch_assoc($resultCustomer14);

$sql15 = 'SELECT * FROM cust NATURAL JOIN orderpay NATURAL JOIN item NATURAL JOIN tran WHERE cat = "foodcupboard" AND orderid = 15';
$resultCustomer15 = mysqli_query($conn, $sql15);
$row15 = mysqli_fetch_assoc($resultCustomer15);

?>

请帮助!

php html sql database
1个回答
0
投票

当您从联接中选择SELECT *时,将获得所有字段,因此您无需在随后的重复查询中仅检索单个字段。

此外,您可以更改WHERE条件以对多个字段进行过滤。例如`WHERE orderid = 15 AND cat IN('drinks','chilled','etc')。

这意味着您可以将所有15个查询减少为一个查询:

SELECT *
FROM cust 
    NATURAL JOIN orderpay 
    NATURAL JOIN item 
    NATURAL JOIN tran 
WHERE cat IN ("chilled", "drinks", "etc.")
    AND orderid = 15;

这将为您提供一个大表结果,并将其作为循环遍历mysqli_fetch_assoc()结果以检索所有数据的练习。

注意:

  • 您要跨很多表加入,因此您可以在SELECT中列出特定字段,也可以列出给定表中的所有字段,例如item.*
  • 请特别注意您的加入,特别是如果您存在一对多关系导致重复的风险。您可以将联接写为foo LEFT INNER JOIN table ON(foo.table = table.id),以便您的条件更加明确。
© www.soinside.com 2019 - 2024. All rights reserved.