2010-01-09 70 views
41

Quiero incrementar el valor de un campo de manera segura usando php y mysql.PHP-MySQL-¿Cómo incrementar de forma segura el campo entero de MySQL?

  1. ¿Qué tipo de mesa/campo debo usar?

  2. ¿Hay una versión mínima de MySQL que debo usar?

  3. ¿Cuál es el código sql para esta transacción segura para MySQL?

+0

¿Cómo cierro las preguntas anteriores? – John

+1

Marque una de las respuestas como "aceptada" (haciendo clic en la marca de verificación, que se pondrá verde - consulte http://stackoverflow.com/faq) –

Respuesta

73

Por qué tipo de "tabla" supongo que te refieres a motor de almacenamiento. Cualquier cosa que admita mutaciones (es decir, no "archivo" u "agujero negro")

Cualquier campo numérico servirá (tinyint, int, float, etc.). Dicho esto, no hay código PHP especial, sólo el SQL para incrementar el campo deseado:

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

Si desea una transacción, entonces el paquete de consulta anterior en una transacción. En cuanto a la versión de MySQL, estoy de acuerdo con @hsz: use la versión más actual posible.

+1

¿Cómo empaco lo de arriba en una transacción? – John

7

Si usted está hablando de clave principal a continuación, establezca id columna como primary y auto_increment.

campo El aumento es el aspecto de que:

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

sobre la versión de MySQL - utilizar el más reciente que pueda. ;)
> 5.0 estará bien.

+2

¿esta transacción es segura? – John

2

1.¿Qué tipo de tabla/campo debo usar?

-> El tipo de tabla depende de lo que haya planificado para su aplicación. Podría ser Innodb o Myisam. Le sugiero que use una columna numérica para que pueda incrementarla/disminuirla. NO lo haga SIN FIRMAS si planea permitir números negativos.

He aquí los límites que le puede resultar útil en declarar su longitud de la columna:

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.Is existe una versión mínima de MySQL debo usar?

-> ¿Solo para usar el autoincremento? Está bien utilizando una versión actualizada. Sugiero algo> 5.2.4, si es posible.

3. ¿Cuál es el código sql para esto, transacción segura para MySQL?

-> Disculpe, no tengo una respuesta para esto en este momento.

+0

OP nunca menciona auto_increment, solo busca incrementar. –

+0

sí, a veces es un incremento, a veces una disminución. Estoy construyendo un sistema de votación para los pulgares arriba/abajo del sistema de puntuación. – John

+0

@Chris: Gracias por señalarlo. @John: He actualizado mi respuesta. Por favor refierase a eso. – Devner

Cuestiones relacionadas