2017-01-05 2 views
1

У меня есть модель клиента с помощью следующей функции:CodeIgniter 3,0 insert_batch работает Localhost, но не на сервере

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

Используя эту функцию в локальном хосте на среде PHP 5.6 работает без каких-либо проблем. На сервере с 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

+0

Можете ли вы добавить функцию контроллера в свой вопрос? –

ответ

0

Я думаю, что я нашел виновника. Это случилось со мной, когда я тестировал на PHP 7.0.0 (по некоторым причинам), а сегодня:

bcit-Ки/CodeIgniter Issue # 4804: error insert_batch using PHP7

Похоже разработчике используется сброс() вместо исходный ток() для захвата первого элемента. Это Snippet является примером, предоставляющим вклад, чтобы показать разницу.

+0

Я случайно увижу эту ссылку через некоторое время. Хотя это сработало, я в конечном итоге использую версию PHP версии 5.6 в своей серверной среде, потому что у меня было слишком много проблем/предупреждений с некоторыми библиотеками. – Linesofcode

+0

Я думаю, когда они выпустят исправление, все будет хорошо. благодаря – lgroschen