我有一个php脚本,它接受一些参数并调用mysql更新。其中一个参数是整数。我在执行mysql update语句之前添加了断点,并使用了var_dump。它显示了int(5),但是当我在数据库中验证结果时,更新列的值显示为2016.该列被定义为INT(11)。我试图将列更改为tinyint,更新后的值变为127.任何人都可以告诉我,我做错了什么?
<?php
header('Location: upd_shpsts.php?shpid=87&stsdesc=abc&stsdate=02/10/2016 4:42PM&ctyid=5');
?>
function UpdShpSts($shpid, $stsdesc, $stsdate, $ctyid) {
$ctyid=intval($ctyid);
var_dump($ctyid);
$usrid = $_SESSION['usr_id'];
$pkgs = array();
$pkgs_query = mysql_query("SELECT pkgid FROM pkg WHERE shpid='$shpid'") or die(mysql_error());
while ($pkg_rows = mysql_fetch_assoc($pkgs_query)) {
$pkgs[] = array(
'pkgid' => $pkg_rows['pkgid']
);
}
if (!empty($pkgs)) {
foreach ($pkgs as $pkg) {
$pkgid = $pkg['pkgid'];
$timestamp = strtotime($stsdate);
$statusdate = date("Y-m-d H:i:s", $timestamp);
mysql_query("INSERT INTO pkgsts (pkgid, stsdesc, stsdate, ctyid, lastchgby, lastchgat) VALUES('$pkgid', '$stsdesc', '$ctyid', '$statusdate', '$usrid', now())") or die(mysql_error());
}
}
}
答案 0 :(得分:1)
您可以在更新语句中切换列
"INSERT INTO
pkgsts (pkgid, stsdesc, stsdate, ctyid, lastchgby, lastchgat)
VALUES('$pkgid', '$stsdesc', '$ctyid', '$statusdate', '$usrid', now())")
如上所述将您的查询排除在外显而易见。切换$ctyid
和$statusdate
"INSERT INTO
pkgsts (pkgid, stsdesc, stsdate, ctyid, lastchgby, lastchgat)
VALUES('$pkgid', '$stsdesc', '$statusdate', '$ctyid', '$usrid', now())")
所以你试图将2016-10-02 <time>
插入到INT字段中,所以MySQL尽力把它变成INT,你最终得到了2016