1

ここに私の機能と日付があります

$data->datecreated = getdate(); 

次のコードでは、データベースに保存されません。なんで?レコードが挿入されますが、datecreated フィールドは無視されるように見えます。

public function generateCode($characters) {

        //Generate the code
        $possible = '23456789bcdfghjkmnpqrstvwxyz';
        $code = '';
        $i = 0;

        while ($i < $characters) {
            $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
            $i++;
        }
        // Get the curent session id of the user        
        $session =  JFactory::getSession();
        $session_id = $session->getId();        

        //Create an stdClass
        $data =new stdClass();
        $data->sessionid = (integer)$session_id;
        $data->captchacode = (string)$code;     
        $data->datecreated = getdate();

        $db = JFactory::getDBO();

        $query = $db->getQuery(true);
        $query->delete($db->nameQuote('#__captchasessions'));
        $query->where($db->nameQuote('sessionid').'='.$db->quote($session_id));
        $db->setQuery($query);
        $db->query();

        $db->insertObject( '#__captchasessions', $data, id );       

        return $code;
    }

これがテーブルの構造です

delimiter $$

CREATE TABLE `ok6ut_captchasessions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sessionid` varchar(200) DEFAULT NULL,
  `captchacode` varchar(10) DEFAULT NULL,
  `datecreated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8$$
4

1 に答える 1

3

getdate()パラメータとして渡されたタイムスタンプがない場合、現在の日付の詳細を含む配列を返します。

あなたのデータベースは、配列ではなくフォーマットされた日付が渡されることを期待していると思います.データベース構造を追加できれば、それが役立つかもしれません.

追加するために編集:

日時フィールドの場合、次のようなものが必要だと思います:

$data->datecreated = date("Y-m-d H:i:s");
于 2012-08-15T23:19:13.100 に答える