首页 > 解决方案 > 在 Codeigniter 中进行插入时出现内部服务器错误

问题描述

我正在使用 Codeigniter 开发一个简单的 CRUD 应用程序,这部分代码运行良好,直到我添加了更多功能。

这是问题所在:我从用户输入向数据库中添加了 3 个项目,并且没有错误。但是当我添加更多输入字段以从用户那里获得更多输入时,当我单击“添加项目”按钮时,我最终得到了内部服务器错误。

以下是查看代码:

<?php
    if ($_SESSION[AppStrings::$NOMENCLATURE] != AppStrings::$SERVICE) {
    if ($_SESSION[AppStrings::$SIZE] != AppStrings::$MICRO) {
?>
        <form data-toggle="validator" class="form-horizontal form-material" method="post" action="#" onsubmit="addProduct(); return false;">
            <div class="form-group m-t-40">
                <div class="col-xs-12">
                    <div class="input-group">
                        <div class="input-group-addon"><i class="mdi mdi-barcode-scan"></i></div>
                            <input class="form-control" type="text" required="" placeholder=" <?= $nomenclature ?> Code" id="product_code" required/>
                        </div>
                    </div>
                </div>
                <div class="form-group m-t-40">
                    <div class="col-md-6">
                        <input class="form-control" type="text" required="" placeholder="<?= $nomenclature ?> Name" id="product_name" required/>
                    </div>
                    <div class="col-md-6">
                        <div class="input-group">
                            <div class="input-group-addon"><i class="mdi mdi-currency-ngn"></i></div>
                            <input class="form-control" type="number" required="" placeholder=" <?= $nomenclature ?> Cost Price" name="product_cp" id="product_cp" required/>
                        </div>
                    </div>
                </div>
                <div class="form-group m-t-40">
                    <div class="col-md-6">
                        <div class="input-group">
                            <div class="input-group-addon"><i class="mdi mdi-currency-ngn"></i></div>
                            <input class="form-control" type="number" required="" placeholder=" <?= $nomenclature ?> Selling Price" name="product_sp" id="product_sp" required/>
                        </div>
                    </div>
                </div>
                <div class="form-group m-t-40">
                    <div class="col-md-6">
                        <textarea class="form-control" type="text" required="" placeholder=" <?= $nomenclature ?> Description" id="product_des" required/></textarea>
                    </div>
                    <div class="col-md-6">
                        <input class="form-control" type="text" required="" placeholder=" <?= $nomenclature ?> Expiry Date" id="product_exp" onfocus="(this.type = 'date')" onblur="if (this.value == '') {
                            this.type = 'text'
                        }" required/>
                    </div>
                </div>
                <div class="form-group m-t-40">
                    <div class="col-md-6">
                        <div class="input-group">
                            <div class="input-group-addon"><i class="mdi mdi-clipboard-account"></i></div>
                            <select name="supplier" class="form-control form-control-line" type="text" id="supplier" placeholder="<?= $nomenclature ?> Supplier"> 
                                <option value="">Supplier</option>
                                <?php
                                    foreach ($suppliers as $supplier) {
                                ?>
                                        <option value='<?= $supplier[DbStrings::$SUPPLIER_NAME] ?>'><?= $supplier[DbStrings::$SUPPLIER_NAME] ?></option>
                                <?php 
                                    }
                                ?>
                            </select>
                        </div>
                    </div>
                    <div class="col-md-6">
                        <div class="input-group">
                            <div class="input-group-addon"><i class="mdi mdi-chevron-double-up"></i></div>
                                <select name="department" class="form-control form-control-line" type="text" id="department" placeholder="<?= $nomenclature ?> Department"> 
                                    <option value="">Department</option>
                                    <?php
                                        foreach ($departments as $department) {
                                    ?>
                                            <option value='<?= $department[DbStrings::$DEPARTMENT_NAME] ?>'><?= $department[DbStrings::$DEPARTMENT_NAME] ?></option>
                                    <?php 
                                        }
                                    ?>
                                </select>
                            </div>
                        </div>
                    </div>
                    <div class="form-group m-t-40">
                        <div class="col-md-6">
                            <div class="input-group">
                                <div class="input-group-addon"><i class="mdi mdi-chevron-up"></i></div>
                                <select name="sub_departments" class="form-control form-control-line" type="text" id="sub_department" placeholder="<?= $nomenclature ?> Department"> 
                                    <option value="">Sub-Department</option>
                                    <?php
                                        foreach ($sub_departments as $sub_department) {
                                    ?>
                                            <option value='<?= $sub_department[DbStrings::$SUB_DEPARTMENT_NAME] ?>'><?= $sub_department[DbStrings::$SUB_DEPARTMENT_NAME] ?></option>
                                    <?php 
                                        }
                                    ?>
                                </select>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="input-group">
                                <div class="input-group-addon"><i class="mdi mdi-cash"></i></div>
                                    <input class="form-control" type="number" placeholder=" <?= $nomenclature ?> Vat" id="vat"/>
                            </div>
                        </div>
                    </div>
                    <div class="form-group text-center m-t-20">
                        <div class="col-xs-12">
                            <button class="btn btn-primary btn-login btn-lg btn-block text-uppercase waves-effect waves-light" type="submit" name="product-btn">Add <?= $nomenclature ?></button>
                        </div>
                    </div>
                </div> <!-- added in the edit -->
            </div> <!-- added in the edit -->            
        </form>
<?php
    }
}
?>

这是 AJAX 代码:

function addProduct() {
    var product_code = $("#product_code").val();
    var product_name = $("#product_name").val();
    var product_cp = $("#product_cp").val();
    var product_sp = $("#product_sp").val();
    var product_des = $("#product_des").val();
    var product_exp = $("#product_exp").val();
    var supplier = $("#supplier").val();
    var department = $("#department").val();
    var sub_department = $("#sub_department").val();
    var vat = $("#vat").val();

    var addUrl = "home/addproduct";
    addUrl += "/" + product_code;
    addUrl += "/" + product_name;
    addUrl += "/" + product_cp;
    addUrl += "/" + product_sp;
    addUrl += "/" + product_des;
    addUrl += "/" + product_exp;
    addUrl += "/" + supplier;
    addUrl += "/" + department;
    addUrl += "/" + sub_department;
    addUrl += "/" + vat;

    $.ajax({type: 'GET', url: addUrl, data: {},
        success: function (result) {
            $.alert({
                content: result
            });
            $("#product_code").val("");
            $("#product_name").val("");
            $("#product_cp").val("");
            $("#product_sp").val("");
            $("#product_des").val("");
            $("#product_exp").val("");
            $("#supplier").val("");
            $("#department").val("");
            $("#sub_department").val("");
            $("#vat").val("");
            location.reload();
        },
        error: function (xhr, status, error) {
            $.alert({
                content: 'Could not complete the process. ' + error
            });
        }
    });
}

这是控制器功能:

private function addproduct($product_code = null, $product_name = null, $product_cp = null, $product_sp = null, $product_des = null, $product_exp = null, $supplier = null, $department = null, $sub_department = null, $vat = null) {
    if (isset($product_code, $product_name, $product_cp, $product_sp, $product_des, $product_exp, $supplier, $department, $sub_department, $vat)) {
        $email = $_SESSION[DbStrings::$EMAIL];
        $product_code = $this->test_input($product_code);
        $product_name = $this->test_input($product_name);
        $product_cp = $this->test_input($product_cp);
        $product_sp = $this->test_input($product_sp);
        $product_des = $this->test_input($product_des);
        $supplier = $this->test_input($supplier);
        $department = $this->test_input($department);
        $sub_department = $this->test_input($sub_department);
        $vat = $this->test_input($vat);
        $product_exp = strtotime($product_exp);

        $insertedProduct = $this->member->insertProduct($email, $product_code, $product_name, $product_cp, $product_sp, $product_des, $supplier, $department, $sub_department, $vat, $product_exp);

        if ($insertedProduct) {
            echo "Your " . $_SESSION[AppStrings::$NOMENCLATURE] . " has been added succesfully";
        } else {
            echo "There was a problem inserting your " . $_SESSION[AppStrings::$NOMENCLATURE] . ". Please try again.";
        }
    } else {
        echo 'Please fill all fields';
    }
}

这是在发回结果之前进行插入的模型:

public function insertProduct($email, $product_code, $product_name, $product_cp, $product_sp, $product_des, $supplier, $department, $sub_department, $vat, $product_exp) {
    $data = array(
        DbStrings::$PRODUCTID => "",
        DbStrings::$EMAIL => $email,
        DbStrings::$PRODUCT_CODE => $product_code,
        DbStrings::$PRODUCT_NAME => $product_name,
        DbStrings::$PRODUCT_COST => $product_cp,
        DbStrings::$PRODUCT_SELLING => $product_sp,
        DbStrings::$PRODUCT_MARKUP => 9,
        DbStrings::$PRODUCT_DESCRIPTION => $product_des,
        DbStrings::$SUPPLIER => $supplier,
        DbStrings::$DEPARTMENT => $department,
        DbStrings::$SUB_DEPARTMENT => $sub_department,
        DbStrings::$VAT => $vat,
        DbStrings::$STOCK_BALANCE => 1,
        DbStrings::$MIN_LEVEL => 1,
        DbStrings::$MAX_QUANTITY => 1,
        DbStrings::$QUANTITY_SOLD => 1,
        DbStrings::$EXPIRY_DATE => $product_exp,
        DbStrings::$DATE_CREATED => time(),
        DbStrings::$DATE_STOCKED => time()
    );

    return $this->db->insert(DbStrings::$PRODUCTS_TABLE_NAME, $data);
}

我仍然从服务器收到错误,不知道还能做什么。

纠正上述问题,代码工作正常。我使用:$this->output->enable_profiler(TRUE);并且我能够看到模型发送到服务器的 MySQL 查询,当我复制查询并将其粘贴到我的 localhost:phpmyadmin 中时,我被标记为错误并且似乎没有语法错误。

现在这让我毛骨悚然,因为我无法解决它。

标签: phpjqueryajaxcodeigniter-3

解决方案


推荐阅读