Я сталкиваюсь с этой ошибкой в моей функции модели:
An uncaught Exception was encountered
Type: Error
Message: Call to a member function real_escape_string() on boolean
Filename: /var/www/html/project/system/database/drivers/mysqli/mysqli_driver.php
Line Number: 391
Backtrace:
File: /var/www/html/project/application/models/FeedCompanies.php
Line: 125
Function: where
Это функция:
public function getCompanyMessages($idCompany)
{
$usersModel = $this->modelslibrary->getModelUsers();
$companiesModel = $this->modelslibrary->getModelCompanies();
$where = array(
$usersModel->table_name.'.id_company' => $idCompany,
$this->table_name.'.deleted' => 'N'
);
$this->db->select(
$this->table_name.'.'.$this->primary_key.', '.
$this->table_name.'.token, '.
$usersModel->table_name.'.id_company, '.
$usersModel->table_name.'.slug, '.
$this->table_name.'.id_user, '.
$this->table_name.'.message, '.
$this->table_name.'.posted_as_company, '.
$this->table_name.'.likes, '.
$this->table_name.'.created_at,
getUserName('.$usersModel->table_name.'.name, '.$usersModel->table_name.'.last_name) as name,
getProfilePhotoURL('.$usersModel->table_name.'.profile_photo) as profile_photo,
getCompanyLogo('.$companiesModel->table_name.'.logo) as company_logo, '.
$companiesModel->table_name.'.name as company_name'
);
$this->db->join($usersModel->table_name, $usersModel->table_name.'.'.$usersModel->primary_key.' = '.$this->table_name.'.id_user');
$this->db->join($companiesModel->table_name, $companiesModel->table_name.'.'.$companiesModel->primary_key.' = '.$usersModel->table_name.'.id_company');
$this->db->where($where);
$this->db->order_by($this->table_name.'.created_at ASC');
$queryResult = $this->db->get($this->table_name);
if (!$queryResult) return null;
$messages = $queryResult->result_array();
if (!$messages) return null;
return $messages;
}
Линия 125 равна $this->db->where($where);
поэтому я написал echo(var_export($where, true));
перед этим, чтобы получить содержимое массива $, где , а содержимое выглядит так:
array (
'users.id_company' => 2,
'feed_companies.deleted' => 'N',
)
Почему у меня возникает эта ошибка и какрешить это?
Моя среда:
- CodeIgniter 3.0.4
- PHP 7.2.5
- Ubuntu 16.04
- MySQL Server 5.7.22
- Apache 2.4.18
А вот мой config/database.php
:
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => '127.0.0.1',
'username' => '{{user}}',
'password' => '{{password}}',
'database' => '{{database}}',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'autoinit' => TRUE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
--- EDIT --
Как и просили, вот содержимое моей модели FeedCompanies.php :
<?php
namespace Application\Models;
use MY_Model;
defined('BASEPATH') OR exit('No direct script access allowed');
require_once (APPPATH.'/libraries/traits/Log.php');
class FeedCompanies extends MY_Model
{
use \Log;
public $table_name = 'feed_companies'; // set the name of the table for this model.
public $primary_key = 'id'; // set the primary key
private $db;
public function __construct()
{
parent::__construct();
$ci =& get_instance();
$this->db = $ci->db;
$this->load->library('modelslibrary');
}
public function storeMessage($insertFields)
{
$insertFields['created_at'] = date("Y-m-d H:i:s");
$this->db->insert($this->table_name, $insertFields);
return $this->db->insert_id();
}
public function getMessage($where)
{
$usersModel = $this->modelslibrary->getModelUsers();
$companiesModel = $this->modelslibrary->getModelCompanies();
// sending only id
if (is_numeric($where)) {
$where = array($this->table_name.'.'.$this->primary_key => $where);
} else {
// setting table name as prefix of each field in where clause to avoid conflict
foreach ($where as $key => $value) {
unset($where[$key]);
$where[$this->table_name . '.' . $key] = $value;
}
}
$where[$this->table_name.'.deleted'] = 'N';
$this->db->select(
$this->table_name.'.'.$this->primary_key.', '.
$this->table_name.'.token, '.
$usersModel->table_name.'.id_company, '.
$usersModel->table_name.'.slug, '.
$this->table_name.'.id_user, '.
$this->table_name.'.message, '.
$this->table_name.'.posted_as_company, '.
$this->table_name.'.likes, '.
$this->table_name.'.created_at,
getUserName('.$usersModel->table_name.'.name, '.$usersModel->table_name.'.last_name) as name,
getProfilePhotoURL('.$usersModel->table_name.'.profile_photo) as profile_photo,
getCompanyLogo('.$companiesModel->table_name.'.logo) as company_logo, '.
$companiesModel->table_name.'.name as company_name'
);
$this->db->join($usersModel->table_name, $usersModel->table_name.'.'.$usersModel->primary_key.' = '.$this->table_name.'.id_user');
$this->db->join($companiesModel->table_name, $companiesModel->table_name.'.'.$companiesModel->primary_key.' = '.$usersModel->table_name.'.id_company');
$this->db->where($where);
$queryResult = $this->db->get($this->table_name);
if (!$queryResult) return null;
$message = $queryResult->result_array();
if (!$message) return null;
return $message[0];
}
public function getCompanyMessages($idCompany)
{
$usersModel = $this->modelslibrary->getModelUsers();
$companiesModel = $this->modelslibrary->getModelCompanies();
$where = array(
$usersModel->table_name.'.id_company' => $idCompany,
$this->table_name.'.deleted' => 'N'
);
$this->db->select(
$this->table_name.'.'.$this->primary_key.', '.
$this->table_name.'.token, '.
$usersModel->table_name.'.id_company, '.
$usersModel->table_name.'.slug, '.
$this->table_name.'.id_user, '.
$this->table_name.'.message, '.
$this->table_name.'.posted_as_company, '.
$this->table_name.'.likes, '.
$this->table_name.'.created_at,
getUserName('.$usersModel->table_name.'.name, '.$usersModel->table_name.'.last_name) as name,
getProfilePhotoURL('.$usersModel->table_name.'.profile_photo) as profile_photo,
getCompanyLogo('.$companiesModel->table_name.'.logo) as company_logo, '.
$companiesModel->table_name.'.name as company_name'
);
$this->db->join($usersModel->table_name, $usersModel->table_name.'.'.$usersModel->primary_key.' = '.$this->table_name.'.id_user');
$this->db->join($companiesModel->table_name, $companiesModel->table_name.'.'.$companiesModel->primary_key.' = '.$usersModel->table_name.'.id_company');
$this->db->where($where);
$this->db->order_by($this->table_name.'.created_at ASC');
$queryResult = $this->db->get($this->table_name);
if (!$queryResult) return null;
$messages = $queryResult->result_array();
if (!$messages) return null;
return $messages;
}
public function updateMessage($idMessage, $updateFields)
{
$updateFields['updated_at'] = date("Y-m-d H:i:s");
$this->db->where($this->primary_key, $idMessage);
return $this->db->update($this->table_name, $updateFields);
}
public function destroyMessage($idMessage)
{
$updateFields['deleted'] = 'Y';
return $this->updateMessage($idMessage, $updateFields);
}
}