CodeIgniter 3.0 insert_batch适用于localhost,但不适用于服务器

时间:2017-01-05 00:22:13

标签: php codeigniter

我有一个具有以下功能的客户模型:

public function add($data)
{
    $this->db->insert_batch('customers', $data);
}

在5.6 php环境中的localhost中使用此功能没有任何问题。在具有7.0 php环境的服务器上,我收到错误:

<p>Severity: Warning</p>
<p>Message:  array_keys() expects parameter 1 to be array, boolean given</p>
<p>Filename: database/DB_query_builder.php</p>
<p>Line Number: 1549</p>

<h1>A Database Error Occurred</h1>
<p>Error Number: 1136</p><p>Column count doesn't match value count at row 1</p><p>INSERT INTO `customers` () VALUES ('John Doe', '25', 'Male'), ('Brad Doe', '22', 'Male')</p><p>Filename: models/Customers_model.php</p><p>Line Number: 22</p>

好吧,我不知道为什么最终查询没有列名,因为我的$data内容很完美。

public function add($data)
{
    print_r($data);
    $this->db->insert_batch('customers', $data);
}

输出:

Array
(
    [0] => Array
        (
            [name] => 'John Doe'
            [age] => 25
            [sex] => 'Male'
        )

    [1] => Array
        (
            [name] => 'Brad Doe'
            [age] => 22
            [sex] => 'Male'
        )
)

最后我在Cpanel上配置了服务器 enter image description here

1 个答案:

答案 0 :(得分:0)

我想我找到了罪魁祸首。当我在PHP 7.0.0(由于某种原因)测试时,它发生在我身上:

bcit-ci / CodeIgniter问题#4804:error insert_batch using PHP7

看起来维护者使用reset()而不是原始的current()来获取第一个元素。这个Snippet是一个提供显示差异的贡献者的例子。