php准备语句更新 - 设置错误的值

时间:2013-10-03 18:45:09

标签: php mysqli prepared-statement

我正在尝试使用预准备语句进行更新,但它会不断更新错误的值(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

我准备好的陈述是否有问题,或者它与我的数据库有什么关系? 字段“token”是INT(255)字段btw。

1 个答案:

答案 0 :(得分:4)

2147483647largest number签名的32位(4字节)INT可以容纳的。

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