【发布时间】:2013-02-27 00:02:37
【问题描述】:
我一直在撕扯我的头发和向众神献祭 - 尽我所能做功课但我遇到了与这里的其他两个帖子相同的问题,这两个帖子似乎都没有解决
Properly formatted MySQL date insert statement returns all 0's
和
MYSQL Date field always outputs 0000-00-00
当我回显时,我得到格式正确的值我使用的是日期而不是 DATETIME MySQL 在日期之前正确输入了一个名称,但随后也输入了一个空白的 longblob(图片) - 似乎它只是输入一个字段或以某种方式我没有正确设置MySQL或其他什么?
我的代码是
catch(PDOException $e)
{
echo "Im sorry dave I cant do that";
echo $e->getMessage();
}
//*next bit is to insure that if connection is lost database is not
partially updated-I think-
//* $DBHandle->beginTransaction();
$firstnameOBS= $_POST['touristfirstname'];
$todaysdateOBS= $_POST['touristdatetoday'];
$picturenow= $_POST['picturesubmitted'];
$JSONfirstname = json_encode($firstnameOBS);
$JSONtodaysdate = json_encode($todaysdateOBS);
$JSONpicturenow = json_encode($picturenow);
echo $JSONtodaysdate ;
//* Below is the send from PHP page to My Sql Server -
//* JSON encode here
try {
$senditin = $DBHandle->prepare("INSERT INTO
`Observations`.`fkarnd`(`firstname`,`datetoday`,`picturesubmitted`) VALUES
(:firstname
, :datetoday ,:picturesubmitted)", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
//* $senditin->bindValue(':firstname', $JSONfirstname, PDO::PARAM_STR);
//* $senditin->bindValue(':datetoday', $JSONtodaysdate, PDO::PARAM_STR);
//* $senditin->bindValue(':picturesubmitted', $JSONpicturenow,
PDO::PARAM_LOB);
//* $myinputarray = array('firstname'=> $JSONfirstname, 'datetoday' =>
$JSONtodaysdate, 'picturesubmitted' => $JSONpicturenow );
$DBHandle->beginTransaction();
$senditin->execute(array('firstname'=> $JSONfirstname, 'datetoday' =>
$JSONtodaysdate, 'picturesubmitted' => $JSONpicturenow ));
//* commit allows transaction begun to complete
$DBHandle->commit();
}
catch ( PDOException $e ) {
echo "I'm sorry, I can't do that Dave......";
file_put_contents( 'dbErrors.txt', $e->getMessage(), FILE_APPEND );
//* rollback function call here? a nasty exception has appeared,
}
echo "<br>"."successful submission";
$DBHandle = null;
?>
【问题讨论】:
-
调用
json_encode()之前的值是多少?这可能会返回一个带引号的字符串,它不是日期,并且将被强制转换为 0,从而导致所有日期为零。您对这些值中的任何一个调用json_encode()的原因是什么? -
你的数据库行的数据类型是什么?
-
你的意思是JSON编码会改变数据类型?在 JSON 编码之前和之后的回声看起来是一样的(主要是我认为,因为为了让事情正常工作,我正在输入数据 yyyy-mm-dd 并且我使用 2002 02 02 所以如果月份和年份被转置它就可以了。
-
字段数据类型为DATE
-
调用 JSON 编码来避免可能的注入