Как проверить, существует ли строка в базе данных CodeIgniter

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

Это проблема, с которой я столкнулся:

Обновлено:

public function individualDiscountVerification($id){

        // Get postID
        $data['item']           =   $this->PublicStore_model->readPostID($id);
        $data['relationship']   =   $this->PublicStore_model->getPostRelationship($id);

        // Get Last Post ID
        $postID         =   $id;
        $activityTitle  =   $data['item']->title;

        // Verify Data
        $itemInCart = $this->PublicCart_model->verifyUserCartItem($postID);

        // Redirect if row does not exist -- HERE IS WHERE I NEED HELP
        if (!$itemInCart){

            // Set message
            $this->session->set_flashdata('error', 'You first need to add it to you cart');

            // Redirect
            redirect('store/read/'.$id);


        // Redirect if seller is the same as the current userID
        } elseif ($this->session->userdata('user_id') == $data['relationship']->user_id) {

            // Set message
            $this->session->set_flashdata('error', 'You can not add discounts to your own products');

            // Redirect
            redirect('store/read/'.$id);

        } else {

            // Verify discount exists
            $discount       =   $this->input->post('discount_code');
            $discountCode   =   $this->PublicCart_model->verifySingleDiscount($discount);

            if (!$discountCode){

                // Set message
                $this->session->set_flashdata('error', 'The discount has expired or is invalid');

                // Redirect
                redirect('store/read/'.$id);

            } else {

                // Get Last ID Data
                $discountID     =   $discountCode->discount_id;

                // Get Discount Type
                $discountType   =   $this->PublicCart_model->getIndividualDiscountID($discountID);

                // Verify data
                $verifyItemDiscount =   $this->PublicCart_model->verifySingleItemDiscountCode($postID, $discountID);

                if ($discountType->type == 'percent' && $verifyItemDiscount != NULL?:'' && $discountID == $data['relationship']->discount_id){

                    // Update Post Array
                    $postData   =   array(
                        'price'         =>  round($data['relationship']->price * ((100 - $discountCode->amount) / 100), 2),
                        'discount_id'   =>  $discountID,
                    );
                    // Update Post Array
                    $this->PublicCart_model->updateUserCartItem($postID, $postData);

                    // Set message
                    $this->session->set_flashdata('success', 'A percent discount type has been applied to your final price');

                    // Redirect
                    redirect('store/read/'.$data['item']->post_id);

                } elseif ($discountID != $data['relationship']->discount_id){

                    // Set message
                    $this->session->set_flashdata('error', 'Percent discount is not attached to this product');

                    // Redirect
                    redirect('store/read/'.$data['item']->post_id);

                } elseif ($discountType->type == 'float' && $verifyItemDiscount != NULL?:'' && $discountID == $data['relationship']->discount_id){

                    // Update Post Array
                    $originalprice  =   $data['relationship']->price;
                    $amount = $discountCode->amount;
                    $postData   =   array(
                        'price'         => $originalprice - $amount,
                        'discount_id'   =>  $discountID,
                    );
                    // Update Post Array
                    $this->PublicCart_model->updateUserCartItem($postID, $postData);

                    // Set message
                    $this->session->set_flashdata('success', 'A float discount type has been applied to your final price');

                    // Redirect
                    redirect('store/read/'.$data['item']->post_id);

                } elseif ($discountID != $data['relationship']->discount_id){

                    // Set message
                    $this->session->set_flashdata('error', 'Float discount is not attached to this product');

                    // Redirect
                    redirect('store/read/'.$data['item']->post_id);
                }

                // Activity Array
                $activityData   =   array();
                // Insert Activity
                $this->Activity_model->add($activityData);

            }
        }
    }

и вот метод в модели:

Обновлено:

  /*
  *
  * IS IN USER'S CART? -- FROM HERE AND BELOW IS FOR THE INDIVIDUAL ITEMS DISCOUNT
  *
  */
  public function verifyUserCartItem($postID){
    $query = $this->db->get($this->relationship, array(
      'post_id'   =>  $postID,
      'friend_id' =>  $this->session->userdata('user_id'),
      'type'      =>  $this->cartType,
    ));

    if ($query->num_rows() > 0){
      return $query->row_array();
    } else {
      return null;
    }

  }
  /*
  *
  * DOES THE DISCOUNT EXISTS?; IF YES, WHAT TYPE OF DISCOUNT IT IS?
  *
  */
  public function verifySingleDiscount($discount){
    $query  =  $this->db->get_where($this->discounts, array(
      'code'  =>  $discount,
    ));
    return $query->row();
  }

  public function getIndividualDiscountID($discountID){
    $query  = $this->db->get_where($this->relationship, array(
      'discount_id' =>  $discountID,
      'status'      =>  $this->published,
    ));
    return $query->row();
  }
  /*
  *
  * IS THE DISCOUNT ATTACHED TO THE POST?; IF YES, UPDATE IT
  *
  */
  public function verifySingleItemDiscountCode($postID, $discountID){
    $query  = $this->db->get_where($this->relationship, array(
      'post_id'     =>  $postID,
      'discount_id' =>  $discountID,
      'status'      =>  $this->published,
    ));
    return $query->row();
  }

  public function updateUserCartItem($postID, $postData){
    $this->db->select('*');
    $this->db->where('friend_id', $this->session->userdata('user_id'));
    $this->db->where('post_id', $postID);
    $this->db->where('type', $this->cartType);
    $this->db->update($this->relationship, $postData);
  }

Примечание. Как видите, я уже использую isset, но это приводит к сбоям в следующих блоках кода (я помещу всю функцию, если потребуется), которые здесь не опубликованы; Я уже использовал if empty или if var === false, но все равно получаю ту же ошибку.

что это за ошибка?

Madhawa Priyashantha 24.10.2018 13:29

Это не совсем та же ошибка, но я просто пытаюсь проверить, существует ли строка, в противном случае перенаправьте меня на конкретную страницу, но если я использую функцию isset (), она извлекает ошибку, которую я хочу, но сбивается со следующим блок кода. Вы хотите, чтобы я отредактировал вопрос и поставил всю функцию контроллера?

Kirasiris 24.10.2018 13:38

Пробовали, но не сработали, теперь он пропускает проверку того, находится ли товар в корзине уже в базе данных.

Kirasiris 24.10.2018 13:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
3 150
1

Ответы 1

попробуйте ниже в функции verifyUserCartItem:

if ($query->num_rows() > 0){
  return $query->row_array();
} else {
  return null;
}

и if (!$itemInCart){ вместо if (isset($itemInCart)){

не работает, если я пойду этим путем, он «пропускает» проверку того, находится ли товар уже в корзине ..... проверьте мой обновленный код еще раз, чтобы понять, что я имею в виду.

Kirasiris 24.10.2018 13:45

Я не понимаю. если $itemInCart будет null, это означает, что в базе данных нет соответствующей строки. так перенаправить. разве это не то, что ты хочешь?

FatemehNB 24.10.2018 14:01

Да, это именно то, что мне нужно, чтобы получить сообщение «Сначала вам нужно добавить в корзину», и на самом деле оно возвращает неправильное сообщение «Процентная скидка не привязана к этому продукту», которое должно отображаться после проверки. элемент корзины НАХОДИТСЯ в тележке пользователя .... не тогда, когда в тележке пользователя нет элемента корзины .... у меня головная боль по этому поводу, спасибо за попытку помочь.

Kirasiris 24.10.2018 14:08

поэтому это означает, что $query->num_rows() больше 0. Я предлагаю вам сделать echo $query->num_rows(), чтобы убедиться, верны ли ваши данные или нет.

FatemehNB 24.10.2018 14:11

Другие вопросы по теме