我在将日期保存到MySQL时遇到问题。当我添加日期时间字段时,它们会像一样正确保存
2014-04-08 09:24:00
但是,当我用下面的脚本更新数据时,它会使用对日期时间字段授予权限
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();
你是说代码中的INSERT语句有效,但UPDATE语句不正确吗?
一个建议是不要更新任何不需要的字段,但如果确实需要更新这些字段,那么POST语句中通过$_POST['signstart']提供的格式是什么?你能把它打印出来并确保它是一个有效的插入格式吗?