亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查表 codeigniter 中是否已經存在兩個值

檢查表 codeigniter 中是否已經存在兩個值

PHP
MMTTMM 2021-11-26 19:30:31
我試圖檢查表中兩列中是否存在一個值。列名是 on_number 和 off_number。我在我的控制器中嘗試了以下操作。但是,該檢查僅適用于 off_number 列而不適用于 on_number。我的控制器。 public function check()        {            $on_number = !empty(get('on_number')) ? get('on_number') : false;            $notId = !empty($this->input->get('notId')) ? $this->input->get('notId') : 0;            if($on_number)                $exists = count($this->duty_book_model->getByWhere([                        'on_number' => $on__number,                        'id !=' => $notId,                    ])) > 0 ? true : false;                if($on_number)                $exists = count($this->duty_book_model->getByWhere([                        'off_number' => $on_number,                        'id !=' => $notId,                    ])) > 0 ? true : false;            echo $exists ? 'false' : 'true';        } My Model     class Duty_book_model extends MY_Model {        public $table = 'tbl_duty_type';        public function __construct()        {            parent::__construct();        }    }擴展 MY_Model 具有:public function getByWhere($whereArg, $args = [])    {        if(isset($args['order']))            $this->db->order_by($args['order'][0], $args['order'][1]);        return $this->db->get_where($this->table, $whereArg)->result();    }如果值存在,我希望它檢查兩列。
查看完整描述

2 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

我相信它對“off_number”不起作用的原因在于這段代碼


if($on_number)

$exists = count($this->duty_book_model->getByWhere([

          //THE NEXT LINE IS THE PROBLEM - LOOK AT THE VALUE!!!

          'off_number' => $on_number, //value should be $off_number - right?

          'id !=' => $notId,])) > 0 ? true : false;

也就是說,我認為您的代碼一團糟。我這么說是因為要遵守 MVC 模式,您的控制器邏輯的很多都應該在模型中。海事組織,這一切都應該是。


我會getByWhere()用一個名為check(). 如果有'id!= $notId AND'on_number' = $on__number` AND off_number', $off_number 的記錄,它將返回 true 。如果缺少任何一個必需的輸入,或者沒有找到記錄,則返回 false。


當您查看以下代碼時,重要的是要了解$this->input->get('some_input')如果$_GET('some_input')為空則返回 null 。


class Duty_book_model extends MY_Model

{

    public $table = 'tbl_duty_type';


    public function check()

    {

        $on_number = $this->input->get('on_number');

        $notId = $this->input->get('notId');

        if(empty($on_number) || empty($notId))

        {

            return false;

        }


        $query = $this->db

                ->select('id')  //could be any field

                ->where('id !=', $notId)

                ->where('on_number', $on__number)

                ->where('off_number', $off_number) 

                ->get($this->table);

        //given $notId = 111 AND $on_number = 222 AND $off_number = 333           

        //produces the query string 

        //SELECT `id` FROM `tbl_duty_type` WHERE `id` != 111 AND `on_number` = 222 AND `off_number` = 333


        if($query) //might be false if the query string fails to work

        {

            return $query->num_rows > 0; //returns boolean

        }


        return false;

    }


}

那么你在控制器中所需要的就是


$exists = $this->duty_book_model->check();

echo $exists ? 'false' : 'true';


查看完整回答
反對 回復 2021-11-26
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

首先,你有一個錯字 'on_number' => $on__number, 你已經加倍下劃線$on__number


第二件事 - 您的支票僅適用于的原因off_number是因為您$exist在兩種情況下都使用了變量。對于 的檢查結果是什么并不重要on_number,因為它總是會被off_number檢查重寫。


解決這些問題的一種方法是使用兩個不同的變量:


if($on_number){

   $exists_on = count($this->duty_book_model->getByWhere([

      'on_number' => $on_number,

      'id !=' => $notId,

   ])) > 0 ? true : false;


   $exists_off = count($this->duty_book_model->getByWhere([

      'off_number' => $on_number,

      'id !=' => $notId,

   ])) > 0 ? true : false;

}

echo (($exists_on===true)&&(exists_off===true)) ? 'false' : 'true';

這不是最好的解決方案,但它必須是最清楚的。


查看完整回答
反對 回復 2021-11-26
  • 2 回答
  • 0 關注
  • 214 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號