gpt4 book ai didi

php - 数据库没有收到正确的数据

转载 作者:搜寻专家 更新时间:2023-10-30 23:04:21 24 4
gpt4 key购买 nike

关闭。这个问题需要debugging details .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




我正在尝试在我的数据库中填充 3 个不同的表。

  • 出售 具有以下行的表:
  • sale_id
  • fk_sale_user
  • fk_payment_id
  • 销售日期
  • Print_for_sale 其中有:
  • print_for_sale_id
  • fk_sale_id
  • price_print_for_sale
  • Print_has_size_has_print_for_sale
  • print_has_size_has_print_for_sale_id
  • fk_print_has_size_id
  • fk_print_for_sale_id

  • 这是我在 mysql 工作台中的数据库的屏幕截图,因此您可以定位。
    database

    我正在尝试进行“购买”行动。
    这是我的标记和 php 代码:

    printdetail.php
    <?php 


    $id= $_GET['print_id'];

    $printdetails = getprintdetailsById($con, $id);

    $line = mysql_fetch_assoc($printdetails);

    $selectsize =" select * from size";

    $result=mysql_query($selectsize);

    ?>


    <div>
    <img width="800px;"src="<?php echo $line['print_img']?>"/>
    </div>


    <div>
    <span> <?php echo $line['print_title']?> </span>
    <form action="addprints.php" method="post">
    <ul>
    <?php while ($line = mysql_fetch_assoc($result)) { ?>
    <li> <input type="checkbox" name="sizes[]" value="<?php echo $line['size_id']?>">
    <?php echo $line['size_name']." Price: ".$line['size_price']."€ "?>
    </li>
    <?php } ?>
    <input type="submit" value="Add to Cart" >
    </ul>
    <input type="hidden" name="print_id" value="<?php echo $id; ?>" />
    </form>
    </div>

    addprints.php
        <?php
    session_start();
    $user_id = $_SESSION['user_id'];
    print_r($_POST);

    $id_print= $_POST['print_id'];

    include('database.php');

    $bought_sizes=$_POST['sizes'];

    $number_of_bought_sizes= count($bought_sizes);


    //header('location:index.php?area=printstore');


    $sqlinsertsale = "insert into sale
    (fk_sale_user,
    fk_payment_id)
    values(".$user_id.", 2)";

    mysql_query($sqlinsertsale);


    for($i=0; $i< $number_of_bought_sizes; $i++){

    $selectsize = "select *
    from size";

    $resultsize = mysql_query($selectsize);

    while($linesize = mysql_fetch_assoc($resultsize))
    { $size_price = $linesize["size_price"]; }


    $selectsale = "select *
    from sale";

    $resultsale = mysql_query($selectsale);

    while($linesale = mysql_fetch_assoc($resultsale))
    { $sale_id = $linesale["sale_id"]; }


    $sqlinsertprintforsale = "insert into print_for_sale
    (fk_sale_id,
    price_print_for_sale)
    values(".$sale_id.", ".$size_price.")";

    mysql_query($sqlinsertprintforsale);


    $selectprinthassize = "select *
    from print_has_size";

    $resultprinthassize = mysql_query($selectprinthassize);

    while($lineprinthassize = mysql_fetch_assoc($resultprinthassize))
    { $print_has_size_id = $lineprinthassize["print_has_size_id"]; }


    $selectprintforsale = "select *
    from print_for_sale";

    $resultprintforsale = mysql_query($selectprintforsale);

    while($lineprintforsale = mysql_fetch_assoc($resultprintforsale))
    { $print_for_sale_id = $lineprintforsale["print_for_sale_id"]; }


    $sqlinserthashas = "insert into print_has_size_has_print_for_sale
    (fk_print_has_size_id,
    fk_print_for_sale_id)
    values(".$print_has_size_id.", ".$print_for_sale_id.")";

    mysql_query($sqlinserthashas);


    }

    ?>

    我对 php 和 mysql 很陌生,所以如果这是一个愚蠢或不好的问题,我很抱歉。我无法弄清楚我做错了什么......
  • 出售 正在 phpmyadmin 中正确更新。一切正常。用户 ID 可以,付款 ID 也可以。 (我还没有完成支付部分,所以我只是用一个数字来测试。)

  • Print_for_sale 正在更新正确的销售 ID (fk_sale_id),但无论我选择哪种打印方式,price_print_for_sale 始终相同。它总是 150,有时应该是 65 或 25。
    (打印价格在 尺寸 表中定义。到目前为止,我有 3 种不同的尺寸,因此价格不同。)

    Print_has_size_has_print_for_sale 正在更新正确的 print_for_sale ID,但 fk_print_has_size_id 始终为第 12 位(这是该列表中的最后一个),并且与我在表单上的选择无关。我相信这就是导致价格出现错误的原因。如果它总是相同的打印和尺寸组合 (print_has_size),那么它总是会有相同的价格......为什么会发生这种情况?

    有人可以帮帮我吗?

    下面是一些phpmyadmin的截图:

    print_has_size_table

    sale_table
    print_for_sale_table
    print_has_size_has_print_for_sale_table

    编辑:这是我使用的功能:
    <?php

    function getprintdetailsById($con, $print_id){
    $question = "select * from print where print_id=".$print_id;

    $result = mysql_query($question, $con);

    return $result;
    }

    ?>

    最佳答案

    这是很多信息..我想我们可以开始调试了。让我们从您的 while 循环开始。在你的 for 循环中,第一行 select * from size ,这应该返回一个数组,然后你用你的while循环迭代这个数组,但你只是将它们分配给一个变量。这将覆盖上一次迭代的数据结果。这是你想要的吗?...待续。

    你不希望它被覆盖..所以你需要为那个while循环做的就是将它分配给一个数组,如下所示:

    while ($linesize = mysql_fetch_assoc($resultsize)) {
    $size_price[] = $linesize["size_price"];
    }

    所以,一旦你有了 $size_price[]有了所有所需的尺寸,我们继续……您的代码现在运行 select * from sale你想要的所有 sale_ids从。所以就像上面一样,将它分配给一个数组,我们会说 $sale_ids[]
    现在您正在尝试运行将数据插入到 print_for_sale 的查询。表,但数据来自您在上面创建的两个不同的数组。这是行不通的,如果是这样,您将需要像您已经尝试过的那样想出疯狂的循环和迭代。

    要修复它,您首先需要查看您的表,为其分配唯一 ID,并通过索引链接它们,一旦您这样做,您需要使用 JOIN查询中的 SQL 命令以将匹配的数据放在一起。

    我也会考虑分离你的代码。这将帮助您重用它。您应该研究 MVC 框架。听说过 Codeigniter 吗?它非常容易学习并且对应用程序非常强大。

    希望这可以帮助。

    关于php - 数据库没有收到正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616173/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com