Comunidad de diseño web y desarrollo en internet online

insertar en Bd con Php y procedimiento Mysql

Citar            
MensajeEscrito el 07 Dic 2012 07:24 pm
Hola tengo este código para insertar datos en una Bd:

Código PHP :

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {   
      
   $insertSQL = sprintf("INSERT INTO datos (recorrido, tiempo, distancia, calorias) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['recorrido'], "text"),
                       GetSQLValueString($_POST['tiempo'], "text"),
                       GetSQLValueString($_POST['distancia'], "double"),
                       GetSQLValueString($_POST['calorias'], "double"));
   $insertFuncionSQL= sprintf("CALL calcula_velocidad (espacio,hora)",
                  GetSQLValueString($_POST['kmh'],"double"));

  mysql_select_db($database_conexion_bici, $conexion_bici);

Se que está mal pues no me inserta en el campo donde tiene que hacerlo el procedimiento Mysql.
¿Puede ayudarme alguien?. Gracias. Saludos.

Por solilopi

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Dic 2012 12:35 am
Insert INTO va despues de que declaraste las variables

Código PHP :

$insert=isset(($_POST['MM_insert'])?$_POST['MM_insert']:"";
$recorrido=$_POST['recorrido'];
$tiempo=$_POST['tiempo'];
$distancia=$_POST['distancia'];
$calorias=$_POST['calorias'];
$kmh=$_POST['kmh'];
   
if ($insert=='form1') {
$mysqli->query("INSERT INTO datos (recorrido, tiempo, distancia, calorias) VALUES ($variables...)");   
}


en todo casso no veo que uses la obsoleta funcion mysql_query

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 08 Dic 2012 12:50 pm
El código me queda así:

Código PHP :

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {   

   $recorrido=$_POST['recorrido'];
   $tiempo=$_POST['tiempo'];
   $distancia=$_POST['distancia'];
   $calorias=$_POST['calorias'];
   $insertSQL = sprintf("INSERT INTO datos (recorrido, tiempo, distancia, calorias) VALUES ($recorrido, $tiempo, $distancia, $calorias)");
   $insertFuncionSQL= sprintf("CALL calcula_velocidad ($distancia,$tiempo)");         
  mysql_select_db($database_conexion_bici, $conexion_bici);
    $Result1 = mysql_query($insertSQL, $conexion_bici) or die(mysql_error());
   $insertGoTo = "insercion_correcta.php";



Me da el siguiente error:

Código MySQL :

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 ':01:01, 23, 321)' at line 1

¿Qué tengo mal?.

Por solilopi

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Dic 2012 03:50 pm
amigo el error que te da esta en tu consulta sql

Código MySQL :

INSERT INTO datos (recorrido, tiempo, distancia, calorias) VALUES ($recorrido, $tiempo, $distancia, $calorias)

y por lo que marca el error una de las variables de php te retorna
:01:01, 23, 321

Código MySQL :

INSERT INTO datos (recorrido, tiempo, distancia, calorias) VALUES ($recorrido, 10:01:01, 23, 321)

osea a ojos de mysql esta mal la consulta ya que usas caracteres de doble punto sin son valores que no son numericos netos entonces usa las comillas para escapar esoso valores

Código MySQL :

INSERT INTO datos (recorrido, tiempo, distancia, calorias) VALUES ('$recorrido', '10:01:01',' 23', '321')

al final tu consulta deberia ser

Código MySQL :

INSERT INTO datos (recorrido, tiempo, distancia, calorias) VALUES ('$recorrido','$tiempo', '$distancia', '$calorias')

con comillas simples o comillas dobles todo dependen del caso

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Dic 2012 04:38 pm
Hola de nuevo, estoy haciendo experimentos con tu propuesta y llego a esto:

Código PHP :

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {   

   $recorrido=$_POST['recorrido'];
   $tiempo=$_POST['tiempo'];
   $distancia=$_POST['distancia'];
   $calorias=$_POST['calorias'];
   $insertSQL = sprintf("INSERT INTO datos (recorrido, tiempo, distancia, calorias)
    VALUES ('$recorrido', '$tiempo', $distancia, $calorias)"&&("CALL calcula_velocidad ($distancia,'$tiempo')"));                     
  mysql_select_db($database_conexion_bici, $conexion_bici);
    $Result1 = mysql_query($insertSQL, $conexion_bici) or die(mysql_error());   
   $insertGoTo = "insercion_correcta.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

Pero me sigue dando errores:

Código HTML :

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 '1' at line 1

Lo máximo que he llegado a conseguir es insertar un registro en dos, es decir, hasta calorías en un registro y kmh en otro. Me estoy frustrando mucho!!.

Por solilopi

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 Dic 2012 03:29 pm
y ese "&&" ???te fijaste?usas algun editor para PHP??

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Dic 2012 10:21 pm
el error se debe por que no estas declarando las variables como deberian ser

Código PHP :

 '".$calorias."' //notese que usamos ' ".$var." '
 

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Dic 2012 05:21 pm
Ya lo he solucionado, al final creé un procedimiento que hiciese el insert con el campo calculado al fuinal y ya funciona. Gracias por vuestra ayuda. Saludos.

Por solilopi

16 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.