PHP - Problema con sentencia preparada php

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con sentencia preparada php

Publicado por Meneth (13 intervenciones) el 18/01/2021 21:17:45
Hola.
Tengo que modificar los datos de un cliente mediante y un formulario y me salta el siguiente error

Fatal error: Uncaught Error: Call to a member function bind_param() on bool in C:\xampp\htdocs\inmobiliaria\php\modificar_cliente.php:34 Stack trace: #0 {main} thrown in C:\xampp\htdocs\inmobiliaria\php\modificar_cliente.php on line 34

Dejo mi código por aquí
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html>
<html>
<head>
	<title></title>
	<link rel="stylesheet" type="text/css" href="../css/estilos.css">
</head>
<body>
	<form method="POST" action="#">
		Nombre <input type="text" name="nombre"><br>
		Apellidos <input type="text" name="apellidos"><br>
		Dirección <input type="text" name="direccion"><br>
		Teléfono 1 <input type="tel" name="telefono1"><br>
		Teléfono 2 <input type="tel" name="telefono2"><br>
		<input type="submit" name="enviar" value="Enviar">
	</form>
	<?php
	if(isset($_POST["enviar"])){
		//Recoger variables
		$nombre=$_POST["nombre"];
		$apellidos=$_POST["apellidos"];
		$direccion=$_POST["direccion"];
		$telefono1=$_POST["telefono1"];
		$telefono2=$_POST["telefono2"];
 
		require_once("funciones_conexion.php");
		$conexion=ConexionBD();
		$id="SELECT id FROM clientes";
 
 
 
		$consulta="UPDATE clientes SET nombre=?, apellidos=?, direccion=? , telefono1=? , telefono2=? WHERE nombre=$nombre";
		$consulta_preparada=$conexion->prepare($consulta);
 
		$consulta_preparada->bind_param("sssii",$nombre,$apellidos,$direccion,$telefono1,$telefono2);
		$consulta_preparada->execute();
 
		$consulta_preparada->fetch();
 
		if(mysqli_query($conexion,$consulta)){
			if($id==$fila["id"]){
				echo "Cliente modificado correctamente<br>";
			}
			else{
				echo "No se ha modificado el cliente<br>";
 
			}
		}
 
		$conexion->close();
 
		}
	?>
 
<a href="clientes.php">Volver atrás</a>
 
</body>
</html>

Sé que el error tiene que ver con la consulta a la base de datos, pero la he cambiado de mil maneras y me salta siempre el mismo error, ya no sé como arreglarlo...
¿Me podrían ayudar?
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
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con sentencia preparada php

Publicado por joel (1269 intervenciones) el 19/01/2021 08:35:46
Hola Meneth, creo que el problema es porque por alguna razón, la variable $consulta_preparada tiene el valor booleano false.... puede ser porque el nombre de la tabla sea incorrecto, o algun nombre de algun campo, o la consulta simplemente sea erronea.

Todos los campos estan bien escritos?

Puede ser que te falte poner las comillas en el $nombre... algo así:
1
$consulta="UPDATE clientes SET nombre=?, apellidos=?, direccion=? , telefono1=? , telefono2=? WHERE nombre='$nombre'";
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

Problema con sentencia preparada php

Publicado por Meneth (2 intervenciones) el 19/01/2021 08:45:46
Muchas gracias por responder
Ahora ya no me da ningún fallo pero no me permite modificar ningún cliente, o sea, no hace ninguna modificación
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
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con sentencia preparada php

Publicado por joel (1269 intervenciones) el 19/01/2021 11:29:09
Puede ser que el update no encuentre ninguna coincidencia? has comprobado que llegue al update correctamente?

Es una mala practica hacer un where con un nombre, ya que pueden haber muchas variaciones.
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
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con sentencia preparada php

Publicado por Meneth (13 intervenciones) el 19/01/2021 21:08:24
si, lo sé, debo hacerlo con el id
Pero al rellenar el formulario, el usuario debe poner el nombre del cliente a modificar, no su id
Lo que no sé hacer es como relacionar el id_cliente con la consulta UPDATE, que contiene el nombre del cliente a cambiar, no la id del mismo.
No sé si me explico.

Lo único que se me ha ocurrido es hacer otra consulta aparte que seleccione el id del cliente de la tabla clientes y meterla en una variable
y luego esa variable ponerla en la consulta UPDATE donde debe ir el campo del id_cliente

Pero tampoco funciona...
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