【问题标题】:Trouble adding data from one table to another将数据从一个表添加到另一个表时遇到问题
【发布时间】:2020-12-17 12:02:04
【问题描述】:

我一直在尝试创建一个付款页面,在该页面添加足够的信息后,订单将与购物车中的商品一起下单。出于某种原因,我的代码没有响应并显示空白屏幕。我对 PHP 比较陌生。谁能帮帮我?下面是代码:-

<?php
    require_once('../connection.php');
    require_once('../product.php');
    session_start();

    $name = $_POST['name'];
    $email = $_POST['email'];
    $address = $_POST['address'];

    if(isset($_POST['payment-made'])){
        if(empty($name) || empty($email) || empty($address)){
            echo "<script>alert('Please enter the complete information!');
            window.location = 'orders.inc.php';</script>";
        } else {
            if(isset($_SESSION['Uid'])){
                if(isset($_SESSION['cart'])){
                    $product_id = array_column($_SESSION['cart'], 'product_id');       
                    $result = mysqli_query($conn,"SELECT * FROM `products`");        
                    while($row = mysqli_fetch_assoc($result)){
                        foreach($product_id as $id){
                            if($row['product_id']==$id){
                                $ordername = $row['item_name'];
                                $nooforder = 1;
                                $sql1 = "INSERT INTO orders(order_name, no_order, cust_name, del_add) 
                                VALUES ('$ordername', '$nooforder', '$name', '$email', '$address');";

                                $done = mysqli_query($conn, $sql1);
                                if($done){
                                    echo "successful";
                                }
                                else{
                                    ini_set('display_errors', '1');
                                    ini_set('display_startup_errors', '1');
                                    error_reporting(E_ALL);
                                }
                            }
                        }
                    }
                }
            }
        }
    }

?>

我怀疑问题出在 $ordername 变量中。谁能澄清导致问题的原因以及如何解决?

【问题讨论】:

  • 警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDOMySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your dataEscaping is not enough!
  • 如果您的payment-made 表单变量未设置,则会导致空白屏幕,因为您不会回显任何错误。同样,如果您的 INSERT 查询不起作用,您不会显示任何消息说它失败。我相信设置PHP错误报告之后错误不会报告它们。

标签: php mysql sql database mysqli


【解决方案1】:

您的 INSERT 查询命名了四列,但提供了五个要插入的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    相关资源
    最近更新 更多