2013-10-03 105 views
1

我試圖做一個準備語句的更新,但它不斷更新錯誤的值(2147483647)。我無法弄清楚這個值是從哪裏來的。這裏是我的代碼:PHP的準備語句更新 - 設置錯誤的值

$myID = 5; 
$loginTokenNew = time() * rand(3, 33) * $myID; 
$_SESSION['loginToken'] = $loginTokenNew; 

$mysqli = connectToDB(); 
$stmt = $mysqli->prepare('UPDATE users SET token=? WHERE id=?') or die('Couldn\'t update user token'); 
$stmt->bind_param('ii', $loginTokenNew, $myID); 
$stmt->execute(); 
$stmt->close(); 
$mysqli->close(); 

奇怪的是,會話變量,需要正確的值,但「令牌場」的分貝不斷,取值爲:2147483647

是我事先準備好的聲明錯不知何故或者它可能與我的數據庫有什麼關係? 字段「令牌」是INT(255)字段btw。

+0

是的,我有session_start()。我的網頁上的會話正常工作..它只是數據庫令牌設置爲錯誤的值 – Langkiller

+0

好的。看起來像[Sverri的回答](http://stackoverflow.com/a/19166990/1415724)下面是有道理的。 –

回答

4

2147483647largest number一個有符號的32位(4字節)INT可以容納。

將該字段更改爲較大的類型,例如BIGINT(或BIGINT UNSIGNED,如果該數始終爲正數)或字符串類型(例如VARCHAR)。

+0

當然!非常感謝 :) – Langkiller