2016-02-04 31 views
1

我有一個php腳本,它接受幾個參數並調用mysql更新。其中一個參數是一個整數。我在執行mysql update語句之前添加了斷點,並使用了var_dump。它顯示int(5),但是當我在數據庫中驗證結果時,更新列的值顯示爲2016.該列被定義爲INT(11)。我試圖將列更改爲tinyint,更新後的值變爲127.誰能告訴我我做錯了什麼?mysql更新語句更改了我的參數值

<?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

顯示你的代碼,請(包括PHP和SQL查詢)。您可以通過點擊原始帖子上的_edit_來完成此操作。 – CodeGodie

+0

您能顯示相關代碼嗎? – fusion3k

+0

我不是真正理解你的問題,但一個INTERGER總是一個INTERGER的大小沒有儲存價值的影響。你可以在結果中使用填充「0」的大小。您可以在手冊下的數據類型https://mariadb.com/kb/en/mariadb/data-types/中找到它。所以當你使用TINYINT時,你的值被截斷。 –

回答

1

你在你的更新statment

"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

+0

愚蠢的我。感謝所有人。我很抱歉。 –

+0

發佈代碼後很酷的問題@ jim-w別忘了接受答案 – devpro