PHP-MySQL-如何安全地增加MySQL整数字段?

时间:2010-01-09 13:50:28

标签: php mysql transactions counter

我想使用php和mysql安全地增加字段值。

  1. 我必须使用哪种类型的表/字段?

  2. 我必须使用最低版本的MySQL吗?

  3. MySQL的安全事务的sql代码是什么?

3 个答案:

答案 0 :(得分:74)

通过什么类型的“表”,我认为你的意思是存储引擎。任何支持突变的东西(即不是“存档”或“黑洞”)

任何数字字段都可以(tinyint,int,float等)。也就是说,没有特殊的PHP代码,只有用于递增所需字段的SQL:

UPDATE table SET field = field + 1 WHERE [...]

如果您想要交易,请将上述查询打包到交易中。至于MySQL版本,我同意@hsz - 尽可能使用最新版本。

答案 1 :(得分:7)

如果您正在谈论主键,请将id列设为primaryauto_increment

增加字段看起来像这样:

UPDATE table SET field = field + 1 WHERE id = 9

关于MySQL版本 - 使用最新版本。 ;)
> 5.0会好的。

答案 2 :(得分:2)

1.我必须使用什么类型的表/字段?

- >表的类型取决于您为应用程序规划的内容。它可能是Innodb或Myisam。我建议你使用数字列,以便你可以增加/减少它们。如果您打算允许负数,请不要将其设为UNSIGNED。

以下是您在声明列长度时可能会发现有用的限制:

TINYINT (length)  - 1 - Integer with unsigned range of 0-255 and a signed range from -128-127
SMALLINT (length)  - 2 - Integer with unsigned range of 0-65535 and a signed range from -32768-32767
MEDIUMINT(length)  - 3 -  Integer with unsigned range of 0-16777215 and a signed range from -8388608-8388607
INT(length)   - 4 - Integer with unsigned range of 0-429467295 and a signed range from -2147483648-2147483647
BIGINT(length)   - 8 -  Integer with unsigned range of 0-18446744 and a signed range from
-9223372036854775808-9223372036854775807

2.我必须使用最低版本的MySQL吗?

- >只是为了使用自动增量?你最好使用最新版本。我建议一些> 5.2.4,如果可能的话。

3. MySQL的安全事务的SQL代码是什么?

- >对不起,暂时没有答案。