Codeigniter: ошибка Невозможно использовать объект типа CI_DB_mysqli_result как массив - PullRequest
0 голосов
/ 06 августа 2020

у меня сейчас проблема с Codigniter

вот мой код

    public function move($data)
{
    $sku = $data['sku'];
    $store = $data['store_id'];
    $sql = "SELECT * FROM products WHERE sku = ? AND store_id = ?";
    $query = $this->db->query($sql, array($data['sku'], $data['store_id']));

    if($query->result_array() != "") {
        $data['qty'] =  $data['qty'] + $query['qty'] ;  //Error here
        $insert = $this->db->query('products', $data);
        return ($insert == true) ? true : false;
    }
    else{

    }
}

где я запускаю проект, я получаю эту ошибку

Type: Error    
Message: Cannot use object of type CI_DB_mysqli_result as array
Filename: C:\xampp\htdocs\index\stock\application\models\Model_products.php

Я уже просматривал для решения, но я не могу решить проблему

может кто-нибудь мне помочь?

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Вероятно, вы использовали неправильную переменную. Попробуйте это:

public function move($data)
{
    $sku = $data['sku'];
    $store = $data['store_id'];
    $sql = "SELECT * FROM products WHERE sku = ? AND store_id = ?";
    $query = $this->db->query($sql, array($data['sku'], $data['store_id']));
    $result_array = $query->result_array();
    if($result_array) {
        $data['qty'] =  $data['qty'] + $result_array['qty'] ;  //Error here
        $insert = $this->db->query('products', $data);
        return ($insert == true) ? true : false;
    }
    else{

    }
}
0 голосов
/ 06 августа 2020

$ query-> result_array () вернет массив строк из базы данных, удовлетворяющий условию запроса. Если вам нужна только одна строка, вы должны ее изменить.

public function move($data)
{
    $sku = $data['sku'];
    $store = $data['store_id'];
    $sql = "SELECT * FROM products WHERE sku = ? AND store_id = ?";
    $query = $this->db->query($sql, array($data['sku'], $data['store_id']));

if($query->num_rows() > 0){
    $row = $query->row();  // select only first row of the query result
    $data['qty'] =  $data['qty'] + $row['qty'] ;
    $insert = $this->db->query('products', $data);  // don't know what you are doing here
    return ($insert == true) ? true : false;
}else{
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...