【问题标题】:Codeigniter Issues with inserting arrays插入数组的 Codeigniter 问题
【发布时间】:2015-03-25 22:19:44
【问题描述】:

这最终可能证明不是问题,但我会提供一些有关情况的背景。

我已(尝试)为我工作的企业创建退货授权系统。所有内部测试似乎都表明系统按预期工作并且所有错误都已修复。我的错误日志是空的,我的 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 上“返回”,这似乎也破坏了它。

据我所知,不同的机器/浏览器/操作系统处理输入数组的方式不同似乎是一个问题......

【问题讨论】:

  • 您可以从modern.ie 下载旧版本的IE 进行测试。
  • 浏览器对 PHP 中数组的构造方式没有任何限制。可能发生的情况是参数没有在您遇到问题的浏览器上发送。这是通过表单还是 ajax 请求来的?如果是后者,那么这些浏览器的 JavaScript 中可能有些东西不起作用。
  • PHP在服务器上运行...如果发布的数据相同,PHP不关心浏览器。

标签: php jquery arrays codeigniter


【解决方案1】:

我最终删除了

$insert_requests['po_number'] != 0

来自我的 if 语句,并简单地将其替换为

if( $insert_requests ) { ... }

首先代表我放在那里的愚蠢的东西。感谢评论的人。

编辑澄清

应该检查插入请求是否存在,而不是查看它是否等于某个值。

【讨论】:

  • 你觉得这和浏览器有什么关系?
  • 填写未通过的行的人使用的是 Windows XP 或 Vista 上的旧版本浏览器。每个能够成功发送订单的人都在 Windows 7 或更高版本上使用(相对)新的浏览器。起初我对此持怀疑态度,因为我知道它必须是服务器端问题,这就是我感到困惑的原因。不过已经清除了。
  • 我知道你已经清理过了。我只是希望有一个合乎逻辑的解释。
  • 没有。那时,我一直在尝试调试问题大约一个半小时,而我尝试的一切最终要么使问题变得更糟,要么根本不起作用,所以我很沮丧,并试图考虑所有可能的问题。该应用程序非常重 ajax/jquery,并且认为在我的一个调用中可能出现了问题。但我什至重写了大部分内容,没有任何问题,所以这个想法被误导了。
  • 好吧,仅供参考…… StackOverflow 致力于维护一个高质量的问答库,以帮助未来的读者。我的评论/问题只是为了达到这个目的。虽然您的答案解决了您的问题,但在不知道根本原因的情况下,它不太可能对其他人有所帮助。
猜你喜欢
  • 2020-12-17
  • 2013-06-17
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2021-03-07
  • 2018-01-11
  • 1970-01-01
相关资源
最近更新 更多