mysql update语句改变了我的参数值

时间:2016-02-04 22:43:24

标签: php mysql

我有一个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());
    }
}

}

1 个答案:

答案 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