-1

我正在努力找出我的代码中的问题,我在这个平台上阅读了一些类似的问题,但没有一个帮助我解决问题。我已经指出错误消息中列出了哪一行(警告:PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\Website system\sale.php on line 60)

<?php
        //link files
        require ('config.php'); //database connection

        //get user input from the form
        if (isset($_POST['formSubmit'])) {
            //product details
            $brand = checkData($_POST['brand']);
            $model = checkData($_POST['model']);
            $serial = checkData($_POST['serialnumber']);
            $yearModel = checkData($_POST['yearmodel']);
            $productType = checkData($_POST['type']);
            $condition = checkData($_POST['condition']);
            //supplier details
            $supplierId = checkData($_POST['supplierid']);
            $supInvoice = checkData($_POST['supplierinvoice']);
            $supPrice = checkData($_POST['supplierprice']);
            //customer details
            $custId = checkData($_POST['customerid']);
            $custInvoice = ($_POST['custinvoice']);
            $custPrice = checkData($_POST['custprice']);
            $purchaseDate = checkData($_POST['purchasedate']);

            require_once ('config.php'); //database connection
            global $dbselect;
            //SQL - add data to database
            $qry1 = 'INSERT INTO product
                    (brand, model, serial, yearmodel, type, prodCondition, purchDate, supplierId, supInvoice, supPrice, custId, custInvoice, custPrice)
                    VALUES
                    (:brand, :model, :serial, :yearModel, :productType, :condition, :purchaseDate, :supplierId, :supInvoice, :supPrice, :custId, :custInvoice, :custPrice)';
            //execute query
            $statement = $dbselect->prepare($qry1);
            $statement->bindValue(':brand', $brand);
            $statement->bindValue(':model', $model);
            $statement->bindValue(':serial', $serial);
            $statement->bindValue(':yearModel', $yearModel);
            $statement->bindValue(':productType', $productType);
            $statement->bindValue(':prodCondition', $condition);
            $statement->bindValue(':purchaseDate', $purchaseDate);
            $statement->bindValue(':supplierId', $supplierId);
            $statement->bindValue(':supInvoice', $supInvoice);
            $statement->bindValue(':supPrice', $supPrice);
            $statement->bindValue(':custId', $custId);
            $statement->bindValue(':custInvoice', $custInvoice);
            $statement->bindValue(':custPrice', $custPrice);

            if ($statement->execute())  { //////<-PROBLEM ON THIS LINE//////
                echo 'New Sale Added Successfully!';
            } else {
                echo 'Not successfull.';
            }
            $statement->closeCursor();
        }

        //validate data 
        function checkData($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            return $data;
        }
    ?> 
4

1 回答 1

0

检查您的列绑定占位符,列“prodCondition”有一个绑定参数占位符“:condition”,但在您的 bindValue 函数中,您将其绑定到占位符“:prodCondition”,这是正确的列名,但不作为占位符存在。为了便于阅读,最好保持列名和占位符一致。

所以查询位应该是:

        //SQL - add data to database
        $qry1 = 'INSERT INTO product
                (brand, model, serial, yearmodel, type, prodCondition, purchDate, supplierId, supInvoice, supPrice, custId, custInvoice, custPrice)
                VALUES
                (:brand, :model, :serial, :yearModel, :productType, :prodCondition, :purchaseDate, :supplierId, :supInvoice, :supPrice, :custId, :custInvoice, :custPrice)';
于 2017-11-09T09:53:25.357 回答