1

我正在尝试使用准备好的语句进行更新,但它不断更新错误的值(2147483647)。我不知道这个值是从哪里来的。这是我的代码:

$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)字段顺便说一句。

4

1 回答 1

4

2147483647是带符号的 32 位(4 字节)可以容纳的最大数。INT

将字段更改为更大的类型,例如BIGINT(或者BIGINT UNSIGNED如果数字始终为正数),或更改为字符串类型,例如VARCHAR.

于 2013-10-03T18:54:20.990 回答