PHP - Problema al insertar registros en base de datos

 
Vista:

Problema al insertar registros en base de datos

Publicado por Jose (2 intervenciones) el 10/07/2012 10:16:46
Hola, tengo una base de datos Mysql q se llama, juegosdemesa, cn una tabla que se llama clasics, he creado este formulario para subir registros a la tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
	 <meta charset="utf-8">
</head>
 
<body>
 
	<div class="formulario">
	<form method="post" action="subir_juego.php">
		<input type="text" class="#" cols="50" rows="1" name="nombre" value="Nombre del juego"/></br>
		<textarea class="formulario" cols="50" rows="5" name="descripcion">Descripcion</textarea></br>
		<input type="text" class="formulario" cols="50" rows="1" name="imagen" value="Ruta de la imagen"/></br>
		<input type="text" class="formulario" cols="50" rows="1" name="precio" value="Precio del juego"/></br>
		<input class="publicar" type="submit" value="publicar">
		</form>
		</div>
</body>
</html>

Luego esta la parte que los sube:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
$dsn = "mysql:dbname=juegosdemesa";
$username = "root";
$password = "root";
$nombreJuego = $_POST['nombre'];
$descripcionJuego = $_POST['descripcion'];
$imagenJuego = $_POST['imagen'];
$precioJuego = $_POST['precio'];
 
try {
	$conn = new PDO($dsn, $username, $password);
	$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}	catch (PDOException $e) {
	echo "Connection failed: " .$e->getMessage();
}
 
$sql = "INSERT INTO clasics VALUES (:nombre, :descripcion, :imagen, :precio)";
 
try {
 
	$st = $conn->prepare($sql);
	$st->bindValue(":nombre", $nombreJuego, PDO::PARAM_STR);
	$st->bindValue(":descripcion", $descripcionJuego, PDO::PARAM_STR);
	$st->bindValue(":precio", $precioJuego, PDO::PARAM_STR);
	$st->bindValue(":imagen", $imagenJuego, PDO::PARAM_STR);
 
}	catch (PDOException $e) {
		echo "Fallo al cargar los datos : " . $e->getMessage();
}
 
echo "juego cargado";
?>

Cuando introduzco los datos en el fornulario y doy a enviar parece que todo funciona, no da ningun mesaje de error y aparece; juego cargado, pero cuando miro en la tabla de la db no me ha creado la nueva fila, agadeceria cualquier ayuda, nose si tengo el codigo mal escrito o pq puede ser.

Muchas gracias, un saludo,
Jose
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema al insertar registros en base de datos

Publicado por Jose (2 intervenciones) el 10/07/2012 13:02:07
He visto que olvide poner la ultima sentencia:

1
$st->execute();

El codigo queda así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
$dsn = "mysql:dbname=juegosdemesa";
$username = "root";
$password = "root";
$nombreJuego = $_POST['nombre'];
$descripcionJuego = $_POST['descripcion'];
$imagenJuego = $_POST['imagen'];
$precioJuego = $_POST['precio'];
 
try {
$conn = new PDO($dsn, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection failed: " .$e->getMessage();
}
 
$sql = "INSERT INTO clasics VALUES (:nombre, :descripcion, :precio, :imagen)";
 
try {
 
$st = $conn->prepare($sql);
$st->bindValue(":nombre", $nombreJuego, PDO::PARAM_STR);
$st->bindValue(":descripcion", $descripcionJuego, PDO::PARAM_STR);
$st->bindValue(":precio", $precioJuego, PDO::PARAM_STR);
$st->bindValue(":imagen", $imagenJuego, PDO::PARAM_STR);
$st->execute();
 
} catch (PDOException $e) {
echo "Fallo al cargar los datos : " . $e->getMessage();
}
 
echo "juego cargado";
?>

Cuando se ejecuta, despues de pasar los datos desde el formulario, me aprece este error:

Fallo al cargar los datos : SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1

La tabla a la que mando los datos tiene 5 columnas, la primera es el id, q se autoincrementa, y las demas son varchar y decimal, no se si es un fallo por PDO::PARAM_STR

Gracias, un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar