tengo esta consulta
Código PHP:
INSERT INTO usuarios (IDusuario, nombre) VALUES (SELECT MAX(IDusuario)+1 as IDusuario FROM usuarios,'diego')
| ||||
prueba con esto:
Código:
INSERT INTO usuarios (IDusuario, nombre) SELECT MAX(IDusuario)+1, 'diego' FROM usuarios
__________________ Si ocurre algo importante, estamos afuera fumándonos unos cigarritos. |
| ||||
mm nop, tampoco me funciono... #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX(IDusuario)+1, 'gomez', '4', '25', '2 que puede ser? probe poniendo el SELECT MAX entre comillas simples pero me da error tambien, sera que no se puede en mysql?
__________________ On error no hago nada porque deje de fumar... |
| ||||
que yo sepa si se puede. el formato para insertar campos desde un select seria algo asi:
Código:
en el caso anterior mysql ejecuta el select y los resultados los guarda en la tabla "tabla1". insert into tabla1 (campo1, campo2, campo3) select campo1, campo2, campo3 from tabla2
__________________ Si ocurre algo importante, estamos afuera fumándonos unos cigarritos. |
| ||||
es que no quiero hacer un select lo que quiero es hacer ese subselect solo para obtener el id del ultimo registro, sumarle uno y ahi cargarle este id al registro que estoy cargando no estoy usando auto_increment
__________________ On error no hago nada porque deje de fumar... |
| ||||
con esto:
Código:
obtienes los mismos resultados que con esto:(SELECT MAX(IDusuario)+1 as IDusuario FROM usuarios,'diego')
Código:
si ejecutas la ultima select, veras que obtienes un registro con dos campos.SELECT MAX(IDusuario)+1, 'diego' as IDusuario FROM usuarios estos dos valores son los que deberias insertar en tu tabla, si no entendi mal.
__________________ Si ocurre algo importante, estamos afuera fumándonos unos cigarritos. |
| ||||
Si tienes definido el id como auto_increment, ya no tienes que hacer nada, pues el propio gestor se encarga de darle el valor siguiente. La instrucción sería:
Código:
Un saludo. insert into usuarios (nombre) values ($nombre)
__________________ Estoy contagiado de Generación-I |
| ||||
es que ese es el problema y NO estoy usando AUTO_INCREMENT Haron.. esto no me funciono (SELECT MAX(IDusuario)+1 as IDusuario FROM usuarios,'diego') probe sacandole el FROM usuarios.. pero .. tampoco gracias por contestar a todos ya lo vamos a encontrar... he revuelto la documentacion de mysql sin encontrar nada.. y esto creo es algo comun
__________________ On error no hago nada porque deje de fumar... |
| ||||
vale, ya entiendo tu problema. en ciertas versiones puedes crear sentencias de "insert" y "update" en las cuales puedes repetir el nombre de la tabla en la que vas a insertar o acualizar datos, pero en otras versiones anteriores no. si estas usando PHP + MySQL, el problema del que me hablas lo solucione asi:
Código:
la funcion anterior te devolvera el siguiente "id" de cualquier tabla:PHP: function getNewKey($key_name, $table_name) { global $CONN; $sql = " select max(".$key_name.") from `".$table_name."`"; $result = mysql_query($sql, $CONN); $row = mysql_fetch_row($result); $new_key = $row[0] + 1; return $new_key; }
Código:
si quieres insertar un nuevo registro, puedes hacer:echo getNewKey("idUsuario", "usuarios");
Código:
el numero de intentos en el "for" anterior se debe a que justo en el momento en que obtienes el nuevo "id", podria darse el caso que algun otro usuario se adelantase, robandote de esta forma el "id" y fracasando la insercion. por eso se intenta al menos 100 veces. y si despues de cien intentos no lo has conseguido... mala suerte.define("MYSQL_DUPLICATE_ENTRY_ERROR", "1062"); // registro duplicado $nombre = "Diego Armando Maradona"; for ($i = 0; $i < 100; $i ++) { $idUsuario = getNewKey("idUsuario", "usuarios"); $sql = " insert into usuarios(idUsuario, nombre) values(".$idUsuario.", '".$nombre."')"; mysql_query($sql, $CONN); $errno = mysql_errno($CONN); if (($errno > 0) && ($errno != MYSQL_DUPLICATE_ENTRY_ERROR)) break; } seguro que hay otras formas de hacerlo. si a alguien se lo ocurre alguna otra, tambien me vendria bien saberlo.
__________________ Si ocurre algo importante, estamos afuera fumándonos unos cigarritos. |
| |||
dieguicho, por que no estas usando el IDusuario como increment?. Si no te (conviene por alguna razon que no veo clual). Estoy casi segulro que MySQL no permite subconsultas. Y si optas por usar el script en php tiene riesgos y mas aun si muchos usuarios pueden insertar al mismo tiempo. Mejor una autoincrement¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ |
| ||||
porque ya esta todo armado asi y me da fiaca cambiar toooodo a auto_increment por otro lado.. les cuento que hice dos consultas separadas 1 para obtener el id y la otra para insertar todos los datos con este nuevo id pero obtengo el siguiente error " Column count doesn't match value count at row 1 " el codigo para eso es el siguiente $generarIDusuario = mysql_query("SELECT MAX(IDusuario) FROM usuarios",$connection); $IDnuevousuario = mysql_result($generarIDusuario,0,0)+1; estoy haciendo algo mal??
__________________ On error no hago nada porque deje de fumar... |