Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Insert de Sentencia parametrizada

Estas en el tema de Insert de Sentencia parametrizada en el foro de PHP en Foros del Web. Buenas, quería ver si me podrían echar una mano, desde que me metí en sentencia parametrizada no caso una. En fin. Quiero hacer un Insert ...
  #1 (permalink)  
Antiguo 29/11/2013, 16:26
 
Fecha de Ingreso: octubre-2011
Mensajes: 20
Antigüedad: 12 años, 6 meses
Puntos: 1
Pregunta Insert de Sentencia parametrizada

Buenas, quería ver si me podrían echar una mano, desde que me metí en sentencia parametrizada no caso una. En fin.

Quiero hacer un Insert con sentencia parametrizada pero no carga nada en la tabla, me base mas o menos en como seria un Select.

Este seria el código:

Código:
				
$mysqli = new mysqli("localhost","user","password","database");
/* Etapa 1: preparación */
				$sentencia = $mysqli->prepare("INSERT INTO tabla (usuario, contrasena, salt, email, fecha, clave) VALUES ('',?, ?, ?, ?, 'C', ?, 'D', ?)");
			
				/* Etapa 2: vincular*/ 
				$sentencia->bind_param("ssssss", $usuario, $contrasena, $salt, $email, $fecha, $clave);

				/* Etapa 3 Ejecutar*/
				$sentencia->execute();
Tengo VALUES id deje vació entre comillas, no se si parametrizada la sentencia es asi, y 'C' y 'D' son valores fijos en la tabla osea la simple letra.

Que esta mal ?

El codigo que quiero sustituir es este que no esta parametrizado

Código:
//$sql="INSERT INTO tabla VALUES ('','$usuario','$contrasena','$salt','$email','C','$fecha','D','$clave')";
			//mysqli_query($conexion, $sql);
Desde ya gracias :)
  #2 (permalink)  
Antiguo 29/11/2013, 16:42
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Insert de Sentencia parametrizada

Pues tu primer problema es que tienes 5 ? pero en el bind_param colocas 7 valores

Revisa eso y nos cuentas

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 29/11/2013 a las 17:03
  #3 (permalink)  
Antiguo 29/11/2013, 17:20
 
Fecha de Ingreso: octubre-2011
Mensajes: 20
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Insert de Sentencia parametrizada

Cambie el código y no pasa nada. Asi quedo

Código:
$mysqli = new mysqli("localhost","user","password","database");
				/* Etapa 1: preparación */
				$sentencia = $mysqli->prepare("INSERT INTO tabla (id, usuario, contrasena, salt, email, tipo, fecha, estado, clave) VALUES (?, ?, ?, ?, ?, ? , ?, ?, ?)");
			
				/* Etapa 2: vincular*/ 
				$sentencia->bind_param("issssssss", $id='' ,$usuario, $contrasena, $salt, $email, $tipo='C', $fecha, $estado='D', $clave);
				
				/* Etapa 3 Ejecutar*/
				$sentencia->execute();
No da errores
  #4 (permalink)  
Antiguo 29/11/2013, 18:17
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Insert de Sentencia parametrizada

@Mati92_CPArg vuelve y juega 9 vs 10 parámetros. Estate atento a esos detalles. Segundo coloca este código en la primer linea del archivo:

Código PHP:
Ver original 

Vuelve a probar

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 29/11/2013, 18:54
 
Fecha de Ingreso: octubre-2011
Mensajes: 20
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Insert de Sentencia parametrizada

No entiendo puse las 9 columnas, los 9 signos ? y los 9 parametros.

Modifique el codigo y dejo de emitir el error que daba con el codigo error_reporting(E_ALL);:
Strict Standards: Only variables should be passed by reference

Código:
				
$id=NULL;
$tipo="C";
$estado="D";
$sentencia->bind_param("sssssssss", $id ,$usuario, $contrasena, $salt, $email, $tipo, $fecha, $estado, $clave);
  #6 (permalink)  
Antiguo 29/11/2013, 19:01
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Insert de Sentencia parametrizada

Prueba colocando esto después de execute:

Código PHP:
Ver original
  1. printf("Error: %s.\n", $sentencia->error);

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 29/11/2013, 19:15
 
Fecha de Ingreso: octubre-2011
Mensajes: 20
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Insert de Sentencia parametrizada

Mil gracias jeje era error en la columna clave.

Use otra variable y le agregue un _ XD

Ahora anda perfecto gracias.
  #8 (permalink)  
Antiguo 29/11/2013, 19:18
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Insert de Sentencia parametrizada

jejeje eso se llama depurar, cuando veas que algo no te funciona y no te genera error por ningún lado, usa este tipo de funciones que te ayudan a ver "errores invisibles"

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 29/11/2013, 19:20
 
Fecha de Ingreso: octubre-2011
Mensajes: 20
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Insert de Sentencia parametrizada

Si ya guarde la función xD me vendrá bien

Etiquetas: fecha, insert, mysql, select, sentencia, sql, tabla
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 17:14.