这最终可能不是问题所在,但我会提供一些有关情况的背景信息。
我(试图)为我工作的企业创建一个退货授权系统。所有内部测试似乎都表明系统按预期工作,所有错误都已修复。我的错误日志是空的,我的javascript控制台没有显示任何异常。
在某些情况中,我认为这是由于浏览器过时(尽管我对此持怀疑态度,因为这似乎是服务器端的问题),"退回"的产品没有插入我的数据库。
在提交时,我会收集用户的联系信息并将其放入数据库中的一个表中——这很好,而且没有问题。
一旦我获得了这些信息,我就会在具有名称数组的字段上运行foreach循环。
foreach( $this -> input -> post('po_number') as $number => $value ){
$ponum = $this -> input -> post('po_number');
$innum = $this -> input -> post('inv_number');
$qty = $this -> input -> post('quantity');
$panum = $this -> input -> post('part_number');
$desc = $this -> input -> post('description');
$reason = $this -> input -> post('reason');
$insert_requests = array(
'rga_id' => $rga_no,
'po_number' => $ponum[$number],
'inv_number' => $innum[$number],
'quantity' => $qty[$number],
'part_number' => $panum[$number],
'description' => $desc[$number],
'reason' => $reason[$number]
);
if( $insert_requests['po_number'] != 0){
$input = $this->db->insert('new_rga_returns', $insert_requests);
}
}
这就是我上面提到的。每一个"$this->input->post"都是我的一个字段,可以通过javascript/jQuery添加。最初有一行输入,可以根据需要添加更多内容。
然而,每个"RGA"甚至没有一行被发送通过。
最令人沮丧的部分是(如上所述)每当办公室里有人输入请求时,它都会工作(运行win7 chrome V41)。我还测试了IE10和最新版本的FireFox,一切都很好。(由于兼容性原因,无法下载旧浏览器)
我们有一个人在他们的mac上"回归",这似乎也打破了它。
据我所知,不同的机器/浏览器/操作系统对输入数组的处理方式不同,这似乎是一个问题。。。
我最终删除了
$insert_requests['po_number'] != 0
从我的if语句,并简单地将其替换为
if( $insert_requests ) { ... }
一开始就代表我放在那里的愚蠢的东西。感谢那些发表评论的人。
编辑以供澄清
应该检查插入请求是否存在,而不是查看它是否等于某个值。