我有一个具有以下功能的客户模型:
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'
)
)
答案 0 :(得分:0)
我想我找到了罪魁祸首。当我在PHP 7.0.0(由于某种原因)测试时,它发生在我身上:
bcit-ci / CodeIgniter问题#4804:error insert_batch using PHP7
看起来维护者使用reset()而不是原始的current()来获取第一个元素。这个Snippet是一个提供显示差异的贡献者的例子。