我的日期没有以日期时间格式正确保存到MySQL

时间:2014-04-10 01:23:34

标签: php mysql sql date datetime

我在将日期保存到MySQL时遇到问题。当我添加日期时间字段时,它们会正确保存

  

2014-04-08 09:24:00

但是,当我使用下面的脚本更新数据时,使用

对datetime字段进行权限处理
  

0000-00-00 00:00:00

然后,如果我第二次用正确的日期更新它,它会正确保存。然后,如果我更新页面上的其他内容,则将其保存为

  

0000-00-00 00:00:00

一次。任何帮助,将不胜感激。或者也许我应该回去将其保存为字符串而不是日期时间

$signstart$signend是我保存的日期字段

 $stmt = $db->prepare("INSERT INTO signings(signstart,signend,custid,contact,samount,prtamount,faxamount,ordern,fname,lname,street1,street2,city,state,zip,hphone,cphone,wphone,fax,email,coname,coworkphone,pid,invoicenumber,loannumber)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

            $stmt->bindParam(1, $_POST['signstart'], PDO::PARAM_STR, 20);
            $stmt->bindParam(2, $_POST['signend'], PDO::PARAM_STR, 20);
            $stmt->bindParam(3, $_POST['custid'], PDO::PARAM_STR, 250);
            $stmt->bindParam(4, $_POST['contact'], PDO::PARAM_STR, 250);
            $stmt->bindParam(5, $_POST['samount'], PDO::PARAM_INT, 11);
            $stmt->bindParam(6, $_POST['prtamount'], PDO::PARAM_INT, 11);
            $stmt->bindParam(7, $_POST['faxamount'], PDO::PARAM_INT, 11);
            $stmt->bindParam(8, $_POST['ordern'], PDO::PARAM_STR, 250);
            $stmt->bindParam(9, $_POST['fname'], PDO::PARAM_STR, 250);
            $stmt->bindParam(10, $_POST['lname'], PDO::PARAM_STR, 250);
            $stmt->bindParam(11, $_POST['street1'], PDO::PARAM_STR, 250);
            $stmt->bindParam(12, $_POST['street2'], PDO::PARAM_STR, 250);
            $stmt->bindParam(13, $_POST['city'], PDO::PARAM_STR, 250);
            $stmt->bindParam(14, $_POST['state'], PDO::PARAM_STR, 250);
            $stmt->bindParam(15, $_POST['zip'], PDO::PARAM_STR, 250);
            $stmt->bindParam(16, $_POST['hphone'], PDO::PARAM_STR, 250);
            $stmt->bindParam(17, $_POST['cphone'], PDO::PARAM_STR, 250);
            $stmt->bindParam(18, $_POST['wphone'], PDO::PARAM_STR, 250);
            $stmt->bindParam(19, $_POST['fax'], PDO::PARAM_STR, 250);
            $stmt->bindParam(20, $_POST['email'], PDO::PARAM_STR, 250);
            $stmt->bindParam(21, $_POST['coname'], PDO::PARAM_STR, 250);
            $stmt->bindParam(22, $_POST['coworkphone'], PDO::PARAM_STR, 250);
            $stmt->bindParam(23, $_POST['pid'], PDO::PARAM_INT, 11);
            $stmt->bindParam(24, $invoicenumber, PDO::PARAM_INT, 11);
            $stmt->bindParam(25, $_POST['loannumber'], PDO::PARAM_STR, 250);
            $stmt->execute(); 

 $sql = "UPDATE signings SET 
       pid = ?,
       signstart = ?, 
       signend = ?,
       custid = ?,  
       contact = ?,
       faxamount = ?,  
       samount = ?,
       prtamount = ?, 
       faxamount = ?,
       ordern = ?,
       loannumber = ?,
       fname = ?,
       lname = ?,
       street1 = ?,
       street2 = ?,
       city = ?,
       state = ?,
       zip = ?,
       hphone = ?,
       cphone = ?,
       wphone = ?,
       fax = ?,
       email = ?,
       coname = ?,
       cocellphone = ?,
       coworkphone = ?
       WHERE id = ?";
        $stmt = $db->prepare($sql);
        $stmt->bindValue('1', $_POST['pid'], PDO::PARAM_INT);
        $stmt->bindValue('2', $_POST['signstart'], PDO::PARAM_STR);
        $stmt->bindValue('3', $_POST['signend'], PDO::PARAM_STR);
        $stmt->bindValue('4', $_POST['custid'], PDO::PARAM_STR);
        $stmt->bindValue('5', $_POST['contact'], PDO::PARAM_STR);
        $stmt->bindValue('6', $_POST['faxamount'], PDO::PARAM_INT);
        $stmt->bindValue('7', $_POST['samount'], PDO::PARAM_INT);
        $stmt->bindValue('8', $_POST['prtamount'], PDO::PARAM_INT);
        $stmt->bindValue('9', $_POST['faxamount'], PDO::PARAM_INT);
        $stmt->bindValue('10', $_POST['ordern'], PDO::PARAM_STR);
        $stmt->bindValue('11', $_POST['loannumber'], PDO::PARAM_STR);
        $stmt->bindValue('12', $_POST['fname'], PDO::PARAM_STR);
        $stmt->bindValue('13', $_POST['lname'], PDO::PARAM_STR);
        $stmt->bindValue('14', $_POST['street1'], PDO::PARAM_STR);
        $stmt->bindValue('15', $_POST['street2'], PDO::PARAM_STR);
        $stmt->bindValue('16', $_POST['city'], PDO::PARAM_STR);
        $stmt->bindValue('17', $_POST['state'], PDO::PARAM_STR);
        $stmt->bindValue('18', $_POST['zip'], PDO::PARAM_STR);
        $stmt->bindValue('19', $_POST['hphone'], PDO::PARAM_STR);
        $stmt->bindValue('20', $_POST['cphone'], PDO::PARAM_STR);
        $stmt->bindValue('21', $_POST['wphone'], PDO::PARAM_STR);
        $stmt->bindValue('22', $_POST['fax'], PDO::PARAM_STR);
        $stmt->bindValue('23', $_POST['email'], PDO::PARAM_STR);
        $stmt->bindValue('24', $_POST['coname'], PDO::PARAM_STR);
        $stmt->bindValue('25', $_POST['coworkphone'], PDO::PARAM_STR);
        $stmt->bindValue('26', $_POST['cocellphone'], PDO::PARAM_STR);
        $stmt->bindValue('27', $_POST['id'], PDO::PARAM_INT);
        $stmt->execute();

1 个答案:

答案 0 :(得分:0)

您是说代码中的INSERT语句有效,但UPDATE语句不能正常工作吗?

一个建议是不更新您不需要的任何字段,但如果您确实需要更新这些字段,那么POST语句中通过$ _POST ['signstart']传入的格式是什么?你可以打印出来并确保它是一个有效的插入格式吗?