Foros del Web » Programando para Internet » PHP »

convertir sentencia sql a numero

Estas en el tema de convertir sentencia sql a numero en el foro de PHP en Foros del Web. Hola: Estoy haciendo una inserción en una BD, y un campo que tengo autoincrementable tengo que especificarlo, de lo contrario, me da error la consulta. ...
  #1 (permalink)  
Antiguo 14/03/2010, 13:55
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
convertir sentencia sql a numero

Hola:

Estoy haciendo una inserción en una BD, y un campo que tengo autoincrementable tengo que especificarlo, de lo contrario, me da error la consulta.

Bueno, no es problema, decidí consultar la BD, extraerlo con un count(campo) y sumarle 1.

Tengo esta sentencia:

Código PHP:
 $veces 'select veces from TABLA;';
 
$IV $veces 1;
 
$sql 'insert into velocidad values("..... '.$IV.');'
La cosa es que si le doy un número me lo inserta bien, pero si pongo esa expresión, simplemente no me lo inserta (como si faltase ese parámetro).

Supongo que la respuesta a esa consulta será una cadena, y por eso me dará el error (supongo xD).

Si es ese el fallo, ¿cómo puedo hacer para pasar el resultado de esa consulta a número?
Y si es por otra cosa, ¿me podeis comentar por qué ocurre?

Muchas gracias!
  #2 (permalink)  
Antiguo 14/03/2010, 13:59
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: convertir sentencia sql a numero

La pregunta es, ¿por qué si el valor es autoincrementable tu tienes que indicarle un valor, si de por sí, la base de datos lo hace por ti? En el INSERT no menciones el campo autoincrementable y la base de datos va a entender que lo tiene que hacer ella (o él no sé como se considera una base de datos ).
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 14/03/2010, 14:05
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: convertir sentencia sql a numero

No tengo idea de por qué, pero si no le especifico el campo, simplemente, no se me inserta (y me pasó lo mismo en clase, hasta el profesor se extrañó).

Acabo de probar esto:

Código PHP:
Ver original
  1. $veces = 'select count(veces) from velocidad;';
  2. $IV = str_replace(".", "", $veces);
  3. $IV = str_replace(",", ".", $veces);
  4. $IV = $veces+1;

Me sigue dando fallo, el resultado siempre es 1. La verdad es que no comprendo bien cómo funciona esa función, solo se que me pide tres parámetros...

Gracias!
  #4 (permalink)  
Antiguo 14/03/2010, 14:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: convertir sentencia sql a numero

pero es que en ningún momento estas ejecutando la consulta...

parece que estas jugando solo con un string, y así... pues nada tiene sentido!!

antes de "incrementar" $IV intenta imprimir su valor, así ojala veas tu problema...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 14/03/2010, 14:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: convertir sentencia sql a numero

Pero no intentes indicar la columna y el valor, menciona las demás columnas y los valores que corresponden y vas a ver que el autoincrementable lo hace por ti.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 14/03/2010, 14:22
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: convertir sentencia sql a numero

Cierto lo de la consulta, pateketrueke. No obstante, aun poniéndola, ocurre lo mismo:

Código PHP:
Ver original
  1. $veces = 'select count(veces) from velocidad;';
  2. $IV = mysql_query($veces, $conexion);
  3. echo $IV.'<br>';
  4. $IV = str_replace(".", "", $veces);
  5. $IV = str_replace(",", ".", $veces);
  6. echo $IV.'<br>';
  7. $IV = $veces+1;
  8. echo $IV."<br>";

Y el resultado es este:

select count(veces) from velocidad;
1

Abimaelrc: ya probé a no indicar ese parámetro en la consulta (que es el último a insertar), pero no ocurría nada. Luego, probé especificándole un número al azar (15 para ser exactos), y se me insertó perfectamente, de ahí que necesite ponerlo.
  #7 (permalink)  
Antiguo 14/03/2010, 15:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: convertir sentencia sql a numero

Postea la estructura de tu tabla en la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 14/03/2010, 15:14
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: convertir sentencia sql a numero

Código SQL:
Ver original
  1. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  2.  
  3. --
  4. -- Base de datos: `juegos`
  5. --
  6.  
  7. -- --------------------------------------------------------
  8.  
  9. --
  10. -- Estructura de tabla para la tabla `velocidad`
  11. --
  12.  
  13. CREATE TABLE IF NOT EXISTS `velocidad` (
  14.   `nombre` VARCHAR(10) NOT NULL,
  15.   `tiempo` FLOAT(4,3) NOT NULL,
  16.   `fecha` DATE NOT NULL,
  17.   `intentos` INT(10) NOT NULL,
  18.   `ip_cliente` VARCHAR(15) NOT NULL,
  19.   `primaria` INT(4) NOT NULL AUTO_INCREMENT,
  20.   PRIMARY KEY (`primaria`),
  21.   UNIQUE KEY `ip_cliente` (`ip_cliente`)
  22. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
  23.  
  24. --
  25. -- Volcar la base de datos para la tabla `velocidad`
  26. --
  27.  
  28. INSERT INTO `velocidad` (`nombre`, `tiempo`, `fecha`, `intentos`, `ip_cliente`, `primaria`) VALUES
  29. ('pablo', 0.222, '0000-00-00', 3, '192.168.0.51', 1),
  30. ('joseka', 0.980, '0000-00-00', 7, '192.168.0.223', 2),
  31. ('javi', 0.890, '0000-00-00', 4, '192.168.0.56', 3),
  32. ('alberto', 0.800, '0000-00-00', 6, '192.168.0.54', 4),
  33. ('arturo', 0.900, '0000-00-00', 5, '192.168.0.52', 5),
  34. ('beatriz', 0.695, '0000-00-00', 4, '192.168.0.236', 6),
  35. ('kevin', 1.582, '0000-00-00', 10, '192.168.0.45', 7),
  36. ('jorge', 0.544, '0000-00-00', 6, '192.168.0.95', 8),
  37. ('ruben', 2.521, '0000-00-00', 4, '192.168.0.78', 9),
  38. ('francis', 0.937, '0000-00-00', 6, '192.168.0.2', 10),
  39. ('marina', 5.214, '0000-00-00', 15, '192.168.0.85', 11);


Todos los datos que hay están puestos "a mano", ninguno ha entrado desde mi PHP
  #9 (permalink)  
Antiguo 14/03/2010, 16:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: convertir sentencia sql a numero

Trata haciendo esto
Código MySQL:
Ver original
  1. INSERT INTO `velocidad` (`nombre`, `tiempo`, `fecha`, `intentos`, `ip_cliente`)
  2. VALUES ('marina2', 5.214, '0000-00-00', 15, '192.168.0.86');
Luego indicanos como te fue.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 14/03/2010, 16:49
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: convertir sentencia sql a numero

Los campos..... xDD

Ahora sí me va perfecto sin tener que especificarlo... muchas gracias.
  #11 (permalink)  
Antiguo 14/03/2010, 16:57
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: convertir sentencia sql a numero

Puff.... otra vez T_T

He probado a recargar la página que tenía después de arreglar el fallo y sí, se me ha insertado, pero al probarla de nuevo desde el principio (tiene que coger unos datos con $_GET) me vuelve a dar error y no se me inserta...

Está tal cuál, ¿cómo es que una se me inserta bien y la siguiente no?
  #12 (permalink)  
Antiguo 14/03/2010, 17:00
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: convertir sentencia sql a numero

Vale, ya se por qué es...

no se por qué, tengo el campo ip_cliente como único.... y al hacerlo dos veces desde el mismo puesto, me dice que está duplicada. Voy a quitarle ese atributo y comento... Gracias
  #13 (permalink)  
Antiguo 14/03/2010, 17:26
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: convertir sentencia sql a numero

Efectivamente, ese era el error... Muchas gracias por la ayuda.

Etiquetas: numero, sentencia, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:08.