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