You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter新增字段后插入操作触发Internal Server Error

排查CodeIgniter CRUD新增字段后出现500内部服务器错误

嘿,我来帮你捋一捋这个问题!之前3个字段正常运行,新增字段后触发Internal Server Error(500错误),大概率是后端处理环节出了问题,前端视图本身很少直接导致500,但我们可以从这几个方向逐一排查:

  • 先看CodeIgniter的错误日志:这是最快定位问题的方法!日志文件一般在application/logs/目录下,打开最新的日志条目,里面会明确写出报错原因——比如数据库字段不匹配、SQL语法错误、必填参数缺失等等,这比瞎猜高效多了。

  • 核对表单字段与后端接收的一致性:你新增了不少字段,比如product_des、product_exp、supplier、department这些,要确保后端控制器里的处理逻辑已经同步接收这些字段。比如用$this->input->post('字段名')的时候,有没有拼写错误?特别注意你的select标签:sub_departments是name属性,但id是sub_department,后端接收时要以name为准,别搞混了。

  • 检查数据库表结构:新增的字段必须在数据库表中有对应的列!比如你加了过期日期、供应商、部门这些字段,数据库表得同步添加这些列,还要注意字段类型匹配:product_exp是日期类型,数据库要设成DATE;vat是数字,得用INT或DECIMAL类型。如果数据库里没有这些列,插入数据时肯定会报错。

  • 校验必填字段与数据库约束:表单里有些字段加了required属性,比如product_des、product_exp,但后端有没有做校验?另外,supplier、department这些select默认是空值,如果数据库对应的字段设为NOT NULL,插入空值就会触发错误,要么给这些字段加默认值,要么前端强制用户选择。

  • 检查JS提交函数addProduct():这个函数负责收集表单数据提交到后端,你得确认它有没有把所有新增字段的值都包含进去。比如AJAX请求的data参数里,是不是漏传了product_des、supplier这些字段?如果漏传了必填项,后端处理时就会抛出错误。

附上你提供的视图代码:

<?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" type="submit">添加项目</button> 
</div> 
</div> 
</form> 
<?php } } ?>

内容的提问来源于stack exchange,提问作者Otoro Wonimidei Antonedei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:25:50