2016-07-15 12 views
1

私はDBからデータベースにジョブ情報を追加しようとしています。MySQLにdatetime文字列を挿入すると0000-00-00

私のフィードの1つは、日付(ポスト)と有効期限を示しています。

私は両方のフィールドを他のフィールドと共に挿入しようとしています。

日は細かい入力しますが、しかし、有効期限は、APIからデフォルトに0000-00-00午後12時00分00秒

例のデータを設定します:

{ 
    "jobId":30081256, 
    "expirationDate":"22/08/2016", 
    "date":"11/07/2016" 
} 

私は日付の準備ができて解析します私は$日と$ EXPIRY_DATEの結果をエコーするとき

$job_date = $job->date; 
$timestamp = strtotime(str_replace('/', '-', $job_date)); 
$date = date("Y-m-d H:i:s", $timestamp); 

//expiry 
$job_expiry = $job->expirationDate; 
$expiry_timestamp = strtotime(str_replace('/', '-', $job_expiry)); 
$expiry_date = date("Y-m-d H:i:s", $expiry_timestamp); 

は、私が手::次のように入力される

2016-07-11 00:00:00 

と私に

2016-08-22 00:00:00 

すべてがよさそうだし、SQLが期待するよう日付がフォーマットされていますが、有効期限が設定されません。

私はそれが私のクエリとは何か(問題のフィールドを表示するために短縮 - 他のすべてのフィールドが正しく挿入)があるかどうかわからないんだけど:

たぶん
"INSERT INTO 
jobs2 (jobref, date, expiry) 
VALUES ('" 
.$jobref 
."','" 
.$date 
."','" 
.$expiry_date 
."') ON DUPLICATE KEY UPDATE 
`date` = VALUES(date), 
`expiry` = VALUES(expiry)" 

ON DUPLICATEの一部を?ジョブは既にデータベースに入っているかもしれませんが、リフレッシュ/更新された日付や有効期限が異なる場合がありますので、APIの最新の値で更新してください。

ここでは何が起こっていますか?要求されたよう

テーブル構造:

CREATE TABLE `jobs2` (
     `date` datetime NOT NULL, 
     `title` varchar(200) COLLATE latin1_general_ci NOT NULL, 
     `company` varchar(100) COLLATE latin1_general_ci NOT NULL, 
     `email` varchar(100) COLLATE latin1_general_ci NOT NULL, 
     `url` varchar(1200) COLLATE latin1_general_ci NOT NULL, 
     `salarymin` int(20) DEFAULT NULL, 
     `salarymax` int(20) DEFAULT NULL, 
     `benefits` varchar(100) COLLATE latin1_general_ci NOT NULL, 
     `salary` varchar(200) COLLATE latin1_general_ci DEFAULT NULL, 
     `jobtype` varchar(30) COLLATE latin1_general_ci DEFAULT NULL, 
     `full_part` varchar(30) COLLATE latin1_general_ci DEFAULT NULL, 
     `salary_per` varchar(20) COLLATE latin1_general_ci DEFAULT NULL, 
     `location` varchar(100) COLLATE latin1_general_ci DEFAULT NULL, 
     `country` varchar(30) COLLATE latin1_general_ci NOT NULL, 
     `description` varchar(3000) COLLATE latin1_general_ci NOT NULL, 
     `category` varchar(100) COLLATE latin1_general_ci DEFAULT NULL, 
     `image` varchar(150) COLLATE latin1_general_ci NOT NULL, 
     `latitude` float NOT NULL, 
     `longitude` float NOT NULL, 
     `town` varchar(50) COLLATE latin1_general_ci NOT NULL, 
     `county` varchar(50) COLLATE latin1_general_ci NOT NULL, 
     `location_id` varchar(255) COLLATE latin1_general_ci NOT NULL, 
     `jobref` varchar(100) COLLATE latin1_general_ci NOT NULL, 
     `partner` varchar(30) COLLATE latin1_general_ci DEFAULT NULL, 
     `company_id` int(20) DEFAULT NULL, 
     `featured` varchar(10) COLLATE latin1_general_ci DEFAULT NULL, 
     `solr_stored` int(1) DEFAULT NULL, 
     `expiry` datetime NOT NULL, 
     UNIQUE KEY `location_id` (`location_id`), 
     KEY `partner` (`partner`), 
     KEY `company` (`company`), 
     KEY `title` (`title`), 
     KEY `company` (`company`), 
     KEY `longitude` (`longitude`), 
     KEY `latitude` (`latitude`), 
     KEY `jobref` (`jobref`), 
     KEY `jobtype` (`jobtype`), 
     KEY `company_id` (`company_id`), 
     KEY `salarymin` (`salarymin`), 
     KEY `salarymax` (`salarymax`), 
     KEY `salary_per` (`salary_per`), 
     KEY `date` (`date`), 
     FULLTEXT KEY `title` (`title`), 
     FULLTEXT KEY `company` (`company`), 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci 
+0

あなたは 'SHOWの結果を投稿することができますか;'? – Galz

+0

@Galzが質問を – rpsep2

+0

@ rpsep2に更新しました - これは意味がありません。複数のnull以外の列には既定値がないため、INSERTクエリはまったく正常に実行できません。 'title'、' company'、 'email'などを指定せずに、' jobref'、 'date'、' expiry'のみのレコードを挿入することはできません – Galz

答えて

0

はこれを試してみてください:表jobs2をCREATE

$job_date = $job->date; 
$timestamp = strtotime(str_replace('/', '-', $job_date)); 
$date = date("Y-m-d H:i:s", $timestamp); 

//expiry 
$job_expiry = $job->expirationDate; 
$expiry_timestamp = strtotime(str_replace('/', '-', $job_expiry)); 
$expiry_date = date("Y-m-d H:i:s", $expiry_timestamp); 

$sql ="INSERT INTO jobs2 (`jobref`, `date`, `expiry`) VALUES ('30081256', '".date($date)."','".date($job_expiry)."') ON DUPLICATE KEY UPDATE `date` = VALUES(date) ,`expiry` = VALUES(expiry)"; 
関連する問題