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

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

日期驗證 Codeigniter

日期驗證 Codeigniter

PHP
侃侃無極 2022-12-03 18:26:23
我正在為我的控制器中的帖子創建驗證。我對日期有疑問。我在應用程序/庫中創建了一個 MY_Form_validation.php 頁面,我在其中寫道:public function valid_date($date, $format = 'Y-m-d') {    $d = DateTime::createFromFormat($date, $format);    return $d && $d->format($format) === $date;}然后我創建了 form_validation_lang.php<?php$lang['form_validation_valid_date'] = 'The field {field} is not a valid date';在我的控制器中,我有://load the libraries$this->form_validation->set_rules('birthdate', irthdate', 'trim|required|valid_date'); if($this->form_validation->run() == FALSE){            $errors = $this->form_validation->error_array();            var_dump($errors);            $this->response($errors, 500);             return;        }  $person = array(//..'birthdate' => $this->post('birthdate'),//...);它打印給我:'生日'=> '字符串'關于我的數據庫,一開始我的領域是數據,我收到了這個錯誤。比我更改為 Datetime 但錯誤是一樣的?,F在是:birthdate日期不為空,例如,現在我試圖發布一個像“1960-04-20”這樣的日期,但我收到了錯誤消息:"birthdate": "字段 birthdate 不是有效日期"我只想在數據庫中寫入日期而不是時間,這可能是問題所在嗎??我該怎么做才能驗證日期?
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

用下一個替換你的函數:


public function valid_date($date, $format = 'Y-m-d') { 

    $d = new DateTime($date); 

    return $d && $d->format($format) === $date;

}

演示


或者與下一個:


public function valid_date($date, $format = 'Y-m-d') { 

    $d = DateTime::createFromFormat($format,$date);   // <-- replace arguments

    return $d && $d->format($format) === $date;

}

演示


DateTime::createFromFormat() 文檔


您需要在成功驗證后將此字符串轉換為 DATE 數據類型,然后才將其發送到數據庫中?;蛘吣憧梢詫?quot;to_date($stringvar,$format)"在你的 SQL 查詢中。


似乎 CodeIgniter 不喜歡驗證選項中的默認變量。我的意思是,你不能聲明$format = 'Y-m-d'為參數。所以,如果你不使用它,它會起作用:


public function valid_date_dmY($str)

{    

        $d = DateTime::createFromFormat('d.m.Y',$str);    

        return $d && $d->format('d.m.Y') === $str; 

}


查看完整回答
反對 回復 2022-12-03
  • 1 回答
  • 0 關注
  • 93 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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