PHP - Error al intentar hacer buscador con consulta preparada

 
Vista:
Imágen de perfil de María de Alejandría
Val: 66
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al intentar hacer buscador con consulta preparada

Publicado por María de Alejandría (37 intervenciones) el 14/04/2019 11:02:38
Saludos
Estoy haciendo un buscador en PHP empleando la siguiente consulta preparada:

1
2
3
4
5
$consulta = $conexion->prepare("SELECT * FROM usuarios WHERE CONCAT_WS(' ', nombre,    apellido) LIKE _utf8  ? ORDER BY nombre");
$consulta->bind_param("s", $buscar);
$consulta->execute();
 
$resultado = $consulta->get_result();

$buscar equivale al término que el usuario inserta en el formulario de búsqueda. La cuestión es que sale sin el utf_8, pero si lo elimino no me reconoce las palabras con tilde si las busco aunque estén en la tabla de usuarios. Si ejecuto la consulta con utf_8 me sale este error:

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

La línea se corresponde con la de

1
$consulta->bind_param("s", $buscar);

Gracias de antemano
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 info
Val: 60
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al intentar hacer buscador con consulta preparada

Publicado por info (17 intervenciones) el 14/04/2019 18:56:13
Hola María, la verdad es que no se muy bien que puede ser...
Podría ser que $consulta tuviera el valor "false"? en vez de un objeto?
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 italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error al intentar hacer buscador con consulta preparada

Publicado por italo_pm (193 intervenciones) el 15/04/2019 08:23:51
Hola

Lo primero que haria seria controlar como tienes definida la variable $buscar, ya que, si utlizaras el LIKE debes darle '%$buscar%' o prepar antes $buscar con %%.

normalmente lo hago asi:

ejemplo con pdo, con mysqli basta que lo adaptes.

1
2
3
4
5
6
7
8
9
$nombre_input = $_POST['query'];
 
  $nombre_like = "%$nombre_input%";
 
  $search_query = "select id, nombre, apellido, from usuarios where nombre LIKE ?";
 
  $stmt = $pdo->prepare($search_query);
 
  $stmt->execute([$nombre_like]);

salud2
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