Php 我的SQL中的日期始终为0000-00-00
我一直在撕扯我的头发,向上帝献祭——做我能做的家庭作业——然而,我和这里的其他两篇文章有着同样的问题,这两篇文章似乎都没有解决 及 当我回显得到正确格式化的值时,我使用的是Date而不是DATETIME MySQL在日期之前正确地输入一个名称,然后还输入一个空白的longblob(图片)-它似乎只是输入了一个字段,或者我没有正确地设置MySQL,或者其他什么 我的代码是Php 我的SQL中的日期始终为0000-00-00,php,mysql,json,Php,Mysql,Json,我一直在撕扯我的头发,向上帝献祭——做我能做的家庭作业——然而,我和这里的其他两篇文章有着同样的问题,这两篇文章似乎都没有解决 及 当我回显得到正确格式化的值时,我使用的是Date而不是DATETIME MySQL在日期之前正确地输入一个名称,然后还输入一个空白的longblob(图片)-它似乎只是输入了一个字段,或者我没有正确地设置MySQL,或者其他什么 我的代码是 catch(PDOException $e) { echo "Im sorry dave I cant d
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;
?>
catch(PDO异常$e)
{
echo“对不起,戴夫,我不能那样做”;
echo$e->getMessage();
}
//*下一位是确保若连接丢失,数据库不会丢失
我想是部分更新了-
//*$DBHandle->beginTransaction();
$firstnameOBS=$\u POST['touristfirstname'];
$todaysdateOBS=$_POST['touristdatetoday'];
$picturenow=$_POST['PicturesSubmitted'];
$JSONfirstname=json_encode($firstnameOBS);
$JSONtodaysdate=json_encode($todaysdateOBS);
$JSONpicturenow=json_编码($picturenow);
echo$JSONtodaysdate;
//*下面是从PHP发送到我的Sql Server页面-
//*在这里进行JSON编码
试试{
$senditin=$DBHandle->prepare(“插入到
`观察值“.`fkard`(`firstname`、`datetoday`、`picturesubmitted`)值
(:名字)
,:datetoday,:picturesubmitted)”,数组(PDO::ATTR_CURSOR=>PDO::CURSOR_FWDONLY);
//*$senditin->bindValue(':firstname',$JSONfirstname,PDO::PARAM_STR);
//*$senditin->bindValue(':datetoday',$JSONtodaysdate,PDO::PARAM_STR);
//*$senditin->bindValue(':PicturesSubmitted',$JSONpicturenow,
PDO::参数(LOB);
//*$myinputarray=array('firstname'=>$JSONfirstname,'datetoday'=>
$JSONtodaysdate,'PicturesSubmitted'=>$JSONpicturenow);
$DBHandle->beginTransaction();
$senditin->execute(数组('firstname'=>$JSONfirstname,'datetoday'=>
$JSONtodaysdate,'PicturesSubmitted'=>$JSONpicturenow));
//*提交允许事务开始完成
$DBHandle->commit();
}
捕获(PDO$e){
埃科“对不起,我不能那样做,戴夫……”;
文件内容('dbErrors.txt',$e->getMessage(),文件附加);
//*这里的回滚函数调用?出现了严重异常,
}
回显“
”“成功提交”;
$DBHandle=null;
?>
您是不是打算调用json_decode($todaysdateOBS)来代替?看起来这可能是问题的根源,因为json_encode将尝试以json格式编码您发送给它的任何内容,这在sql()中不是有效的日期字段。在调用json_encode()
之前,该值是多少?这可能会返回一个带引号的字符串,该字符串不是日期,将强制转换为0,从而导致所有的日期都为零。您对这些值调用json\u encode()
的原因是什么?数据库行的数据类型是什么?您的意思是json encode将更改数据类型?在JSON编码前后,回音看起来是一样的(我认为主要是因为为了让事情顺利进行,我正在输入数据yyyy-mm-dd,我使用2002 02 02,所以如果月份和年份被转置,它就可以了。字段的数据类型是DATEcalling JSON encode,以避免可能的注入。我正在尝试将数据输入数据库,因此我在提交给数据库之前对数据进行编码。如果我将其取出,我将ld use decode?我将尝试将MySQL DB字段从日期类型更改为字符串?但这似乎与我使用JSON的原因背道而驰…?如果您使用MySQL DB的字符串类型,这是有意义的。但是您当然会失去内置的datetime函数。关闭这只小狗-谢谢大家-没有JSON工作正常…必须解决这个问题另一种方式。THANKS@DPR-如果你必须批准一个被接受的答案,这就是帖子关闭的方式