日期未保存在mysql数据库中

2024-04-18

我在 MySQL 数据库中保存日期时遇到问题。 测试一切:

我正在尝试将 2010-01-01 (例如)保存在 MySQL 数据库中。 首先,我将 MySQL 字段设置为最新。这不起作用。但是当我将字段设置为字符串类型时,它确实将日期保存在数据库中。

当我想将日期保存到日期字段时,为什么它不起作用?

虽然我认为代码在这里并不重要,但我会根据要求将其发布。

我用的是zf 1.9.6

class JS_Form_EventForm extends ZendX_JQuery_Form{

    public function init($options=null){
        //parent::__construct($options);

        $this->setName("newEvent");
        $this->addElementPrefixPath('JS_Validate','JS/Validate/','validate');       
        //naam
        $evtName = new Zend_Form_Element_Text("evt_name");
        $evtName->setLabel("Evenement Naam: ")
                ->setRequired(true);
        // omschrijving
        $evtDescription = new Zend_Form_Element_Textarea("evt_description",array("rows"=>6,"cols"=>25));
        $evtDescription->setLabel("Evenement omschrijving: ");

        // locatie
        $evtAdr = new Zend_Form_Element_Select("adr_id");
        $evtAdr->setLabel("Locatie: ");
        $locaties = $this->getLocations();
        $evtAdr->setMultiOptions($locaties);

        $newAdr = new Zend_Form_Element_Button("new_adr");
        $newAdr->setLabel("+");
        // begin datum  
        $evtStartDate = new ZendX_JQuery_Form_Element_DatePicker("evt_startdate",array("label"=> "Begin Datum"));
        $evtStartDate->setJQueryParam('dateFormat', 'dd-mm-yy');
        $evtStartDate->addValidator(new Zend_Validate_Date('dd-mm-YYYY'));

        // eind datum
        $evtEndDate = new ZendX_JQuery_Form_Element_DatePicker("evt_enddate",array("label"=> "Eind Datum"));
        $evtEndDate->setJQueryParam('dateFormat', 'dd-mm-yy');
        $evtEndDate->addValidator(new Zend_Validate_Date('dd-mm-YYYY'));
        $evtEndDate->addValidator('CompareDates',false,array('evt_startdate'));

        // begin tijd
        $evtStartTime = new Zend_Form_Element_Text("evt_starttime");
        $evtStartTime->setLabel("Begin Tijd");
        $evtStartTime->addValidator(new Zend_Validate_Date('hh:mm',new Zend_Locale('auto')));

        // eind tijd
        $evtEndTime = new Zend_Form_Element_Text("evt_endtime");
        $evtEndTime->setLabel("Eind tijd");
        $evtEndTime->addValidator(new Zend_Validate_Date('hh:mm'));
        // aantal personen
        $amountPersons = new Zend_Form_Element_Text("evt_amtpersons");
        $amountPersons->setLabel("Aantal personen nodig ");

        $save = new Zend_Form_Element_Submit("save");
        $save->setLabel("Opslaan");


        $this->addElements(array($evtName,$evtDescription,$evtAdr,$newAdr,$evtStartDate,$evtEndDate,$evtStartTime,$evtEndTime,$amountPersons,$save));
        $this->setMethod('post');
        $this->setAction(Zend_Controller_Front::getInstance()->getBaseUrl().'/events/add');


    }

保存数据:

 public function addAction()
    {
        // action body
                $form = new JS_Form_EventForm();
                if(!$this->getRequest()->isPost()){
                    $this->view->form = $form;
                }else{
                    $formdata = $this->_request->getPost();
                    if(!$form->isValid($formdata)){
                        $this->view->form = $form;
                    }else{

                        //http://zendgeek.blogspot.com/2009/07/zend-framework-building-complete.html
                        unset($formdata['save']);
                        $formdata['evt_name'] = ucfirst($formdata['evt_name']);
                        $e = new JS_Model_events();
                        $e->insert($formdata);
                        if($e ==true){

                            $this->_redirect('events/list');
                        }else{

                            echo 'Iets gaat niet goed';
                        }
                        /*
                        $formdata['sts_id'] = 1;
                        $eventsTable = new JS_Model_DbTable_events();
                        $eventsTable->insert($formdata);
                        */
                        die();
                        // form valid process data
                    }
                }
    }

class JS_Model_DBTable_Events extends Zend_Db_Table_Abstract{

    protected $_name = 'events';

    public function remove($id){
        if(isset($id)){
            $where = $this->getAdapter()->quoteInto('evt_id = ?', $id);
            return($this->delete($where));
        }else{
            return false;
        }
    }

    /*
     * function selectOne
     * @param int id the id of the event to select
     * @return resultset.
     */
    public function selectOneRow($id){

        //$where = $this->getAdapter()->quoteInto('evt_id = ?', $id);
        //$query = $this->select($where);
        //$result= $this->fetchRow($query);

        $select = $this->select();
        $select->where('evt_id = ?', $id);
        $rows = $this->fetchAll($select);

        return($rows);

    }

}

我猜这就是你的问题的原因:

$evtStartDate->addValidator(new Zend_Validate_Date('dd-mm-YYYY'));

MySQL 不理解格式中的日期文字dd-mm-YYYY。 MySQL 理解YYYY-MM-DD or YY-MM-DD,以及一些其他变体。

See http://dev.mysql.com/doc/refman/5.1/en/datetime.html http://dev.mysql.com/doc/refman/5.1/en/datetime.html有关接受的日期文字格式的官方文档。


回复评论:您可以在 PHP 代码中转换日期,或者您可以使用STR_TO_DATE() http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-dateMySQL 函数。通过一个Zend_Db_Expr对象代替文字值。

$startdate_expr = $this->getAdapter()->quoteInto("STR_TO_DATE(?, '%d-%m-%Y')",
  $formdata["evt_startdate"]);
$formdata["evt_startdate"] = new Zend_Db_Expr($startdate_expr);

$enddate_expr = $this->getAdapter()->quoteInto("STR_TO_DATE(?, '%d-%m-%Y')",
  $formdata["evt_enddate"]);
$formdata["evt_enddate"] = new Zend_Db_Expr($enddate_expr);

$e->insert($formdata);

或者您可以更改 Web 应用程序的表单以要求日期在YYYY-MM-DD格式,然后您无需转换任何内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

日期未保存在mysql数据库中 的相关文章

  • 带有多表查询的 SQL Join 版本的 Djangoviews.py

    需要一些有关 Django 版本的 SQL 多表查询的帮助 该查询使用 3 个表来检索餐厅名称 地址Restaurants table和美食类型来自Cuisinetypes table 所有这些都基于通过 URL 传递的菜品名称 菜品 ID
  • Java日期格式转换

    我目前正在从请求对象中提取三个表单字段输入 日 月 年 该月的第 11 天为 Day 11 12 月为 12 月 今年将是 2010 年 我需要将其转换为 Java Date 对象 但由于发生了很多变化 我不确定将其存储在 java 对象中
  • 来自两个表的数据而不重复第一个表的数据?

    我的 MySQL 数据库中有两个表 用户表和用户元表 我正在寻找一种方法 通过一个查询从两个表中获取所有信息 但不重复用户表中的信息 这也是与用户 ID 号相关的所有信息 例如 user id 1 有没有办法查询数据库并收集两个表中的所有信
  • mySQL中外键必须是索引吗?

    我刚刚自己创建了第一个 mySQL 表 除了使用 Joomla Wordpress 等 我是 MS SQL 开发人员多年 但通常我可以轻松地在 MS SQL 中创建外键 但我遇到了困难或这里缺乏知识 这是我的表格 users user id
  • MySQL:如果该ip没有任何记录则插入

    I use INSERT INTO rating name user rating section ip VALUES name SESSION user rate section SERVER REMOTE ADDR 我想在 IF 语句中
  • Rails 3.2.2 mysql2 适配器错误

    我在让 mysql2 适配器与最新版本的 Rails 一起工作时遇到了麻烦 我刚刚生成了一个新项目 将以下内容添加到我的 gemfile 中 gem mysql2 lt 0 3 7 然后当然跑了 bundle install 我还修改了我的
  • 更改表以给出外键约束

    我有一个表 其中有 2 列 是从两个不同的表复制的 我现在要做的是对列名 email 和 id 给出外键约束 如下所示 ALTER TABLE users role map ADD CONSTRAINT FK users role map
  • 如何向多个涉及外键依赖的表插入数据(MySQL)

    我正在寻找将数据插入多个 MySQL 表的最佳实践方法 其中某些列是外键依赖项 这是一个例子 Table contacts contact id first name last name prof id zip code 联系人 表有主键
  • 为什么这个简单的 MySQL 查询不返回该行?

    我在表中有一行users与用户名test 但由于某种原因 此查询返回空结果集 SELECT id FROM users WHERE username test AND id null 但是 如果我删除 id null段 查询返回结果id 1
  • Knexjs 返回 mysql 时间戳、日期时间列作为 Javascript Date 对象

    我正在使用 knex 并以格式插入数据YYYY MM DD HH mm ss e g 2017 07 14 15 00 00 保存后 当提取数据时 日期时间列值将作为 JavaScript Date 对象返回 我想以以下格式返回这些对象YY
  • DataImportHandler 未在 solr admin 中索引 mysql 表

    我正在尝试使用 DataImportHandler 在 solr 中索引 mysql 表 但它似乎没有索引 数据配置 xml
  • php 中的 PDOException“找不到驱动程序”

    我已经在 Linux 系统上安装了 Lampp 并且正在学习 symfony2 同时尝试使用 symfony2 命令创建架构 php app console doctrine schema create 我收到以下错误消息 PDOExcep
  • 用户已拥有超过“max_user_connections”个活动连接 HANGFIRE

    我明白 用户已拥有超过 max user connections 个活动连接 已经有很多答案了 但这是关于Hangfire的 我在用Hangfire http docs hangfire io en latest background pr
  • 未找到列:1054 未知列 laravel

    所以我尝试用 laravel 制作一个表单 但除了新版本之外 他们删除了表单 但我可以让它运行 所以这里是 Route post register function user new User user gt u n Input get u
  • 通过页面打开 mysql 连接是完全鲁莽的吗?

    当查询数据库时 是否会感到极度偏执 每次必须完成新查询时 我都会打开和关闭 mysql 连接 我担心 尤其是启用 ajax 的页面 这会导致性能大幅下降 我应该继续使用此方法 还是至少在每个页面 而不是每个查询 中打开和关闭连接一次 顺便说
  • MySQL 5.0 索引 - 唯一索引与非唯一索引

    MySQL 唯一索引和非唯一索引在性能方面有什么区别 假设我想在 2 列的组合上创建索引 并且该组合是唯一的 但我创建了一个非唯一索引 这会对 MySQL 使用的性能或内存产生重大影响吗 同样的问题 有区别吗primary钥匙和unique
  • 无法使用php连接到远程数据库

    我在 Windows 中安装了 Xampp 并且正在使用 Laravel 5 3 创建一个应用程序 我正在尝试在本地网络上的另一台服务器上执行查询 但是当我尝试这样做时 MySql 服务器使用以下命令对本地服务器上的用户进行身份验证 use
  • ZF2:如何从自定义类内部获取 ServiceManager 实例

    我无法弄清楚如何从自定义类内部获取 ServiceManager 实例 在控制器内部很简单 this gt getServiceLocator gt get My CustomLogger gt log 5 my message 现在 我创
  • Laravel - SQL - SQLSTATE[01000]:警告:1265 第 1 行列“nsfw”的数据被截断

    我试图保护数据库中的一些数据并收到以下错误 SQLSTATE 01000 警告 1265 第 1 行的列 nsfw 的数据被截断 nsfw 列的标准值是 0 这是我的桌子 nsfw 列也在模型中 fillable array 我想检测是否选
  • MySQL:错误 1215 (HY000):无法添加外键约束

    我读过了数据库系统概念 第六版 西尔伯沙茨 我将在 OS X 上的 MySQL 上实现第 2 章中所示的大学数据库系统 但我在创建表格时遇到了麻烦course 桌子department好像 mysql gt select from depa

随机推荐