Foros del Web » Programando para Internet » PHP »

Uso de LIKE en mysqli

Estas en el tema de Uso de LIKE en mysqli en el foro de PHP en Foros del Web. Hola amigos del foro estoy usando mysqli por primera vez y queria hacer una consulta para buscar palabras semejantes (LIKE) en una de las columnas ...
  #1 (permalink)  
Antiguo 16/05/2014, 11:36
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 6 años, 10 meses
Puntos: 0
Uso de LIKE en mysqli

Hola amigos del foro estoy usando mysqli por primera vez y queria hacer una consulta para buscar palabras semejantes (LIKE) en una de las columnas de la BDD.

en la BDD "noticias " hay una columna llamada contenido actualmente tiene: "Falta harina en Venezuela"

tengo un input donde se coloca la letra o palabra clave a buscar
el codigo luego de hacer submit seria

Código PHP:

include("conexion.php");


if(isset(
$_POST['Buscar'])){

$clave $_POST['search'];

$sql "SELECT id,titulo FROM noticias WHERE contenido LIKE ? ";
$likeString '"%'.$clave.'%"';


$stmt $conexion->prepare($sql);
$stmt->bind_param('s',$likeString);
$stmt->execute();


 
$stmt->bind_result($id,$titulo);

 
 if(
$stmt){
echo 
$id
echo 
$titulo;


no da error pero no muestra ningun resultado hice la consulta en sql y funciono.

Alguna Ayuda por favor??
Gracias
  #2 (permalink)  
Antiguo 16/05/2014, 13:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Uso de LIKE en mysqli

MYSQLI es una librería de acceso a MySQL para PHP. Es decir, es tema de programación.

OFF TOPIC en MySQL.

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/05/2014, 13:57
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 12 años, 8 meses
Puntos: 292
Respuesta: Uso de LIKE en mysqli

Primero la conexion, se establece ?

Código PHP:
Ver original
  1. <?php
  2.  
  3. $conexion = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');
  4.  
  5. if ($mysqli->connect_errno)
  6.     die('Connect Error: ' . $mysqli->connect_errno);

Segundo,

Código PHP:
Ver original
  1. $ok = $stmt->execute();

execute() devuelve TRUE si fue exitosa, lo fue ?
__________________
Salu2!
  #4 (permalink)  
Antiguo 16/05/2014, 16:15
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 6 años, 10 meses
Puntos: 0
Respuesta: Uso de LIKE en mysqli

Gracias por responder

La conexion ya estaba hecha en un archivo conexion.php

preguntaba por que la sentencia no retorna ningun valor .

parece que execute() fue exitoso pero no muestra nada.


por que sera?

Gracias de antemano
  #5 (permalink)  
Antiguo 16/05/2014, 17:26
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 12 años, 8 meses
Puntos: 292
Respuesta: Uso de LIKE en mysqli

Solo decia que verifiques la conexion fue exitosa, y que verifiques la consulta con execute() fue exitosa

Si fue exitosa la segunda, obvio lo fue la primera y por tanto sino tienes resultados es porque no hay registros que satisfazcan esas condiciones
__________________
Salu2!
  #6 (permalink)  
Antiguo 16/05/2014, 17:52
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 6 años, 10 meses
Puntos: 0
Respuesta: Uso de LIKE en mysqli

Gracias por responder italico el problema es que he probado con palabra claves que estan dentro de la columna contenido y no muestra los resultados, cuando hago la consulta en mysql directamente me muestra los resultados...no entiendo si hay algo errado en el codigo ...???
  #7 (permalink)  
Antiguo 16/05/2014, 18:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Uso de LIKE en mysqli

Vamos por partes: Yo no le encuentro sentido a hacer esto:
Código PHP:
Ver original
  1. $sql = "SELECT id,titulo FROM noticias WHERE contenido LIKE ? ";
  2. $likeString = '"%'.$clave.'%"';
Para hacer algo que puedes construir así:
Código PHP:
Ver original
  1. $sql = "SELECT id,titulo FROM noticias WHERE contenido LIKE '%$clave%' ";
En mi opinión es desperdiciar código.
Por otro lado, puedo suponer que podría estar disparando un error de sintaxis sin ni siquiera saberlo, porque no estás validando el éxito o fracaso de la query. Simplemente no lo haces y eso es básico: Siempre debes verificar que funcionó.

Código PHP:
Ver original
  1. if($stmt->execute())
  2.   {
  3.    // Lo que sea que hagas
  4.   }


Mas o menos por acá:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. if (isset($_POST['Buscar'])) {
  4.     $clave = $_POST['search'];
  5.     $sql = "SELECT id,titulo FROM noticias WHERE contenido LIKE '%$clave%'";
  6.     $stmt = $conexion->prepare($sql);
  7.     if ($stmt->execute()) {
  8.         $stmt->bind_result($id, $titulo);
  9.         echo $id;
  10.         echo $titulo;
  11.     }
  12. }
  13. ?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 16/05/2014, 21:35
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 6 años, 10 meses
Puntos: 0
Respuesta: Uso de LIKE en mysqli

Gracias Soloyo pero probe tu codigo aunque entra en el if(stmt->execute()) aun no muestra ningun resultado en las variables $id o $titulo.


Alguna idea por que sera?
Gracias
  #9 (permalink)  
Antiguo 17/05/2014, 05:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Uso de LIKE en mysqli

Usa var_dump en lugar de echo, y veamos si realmente contienen algo.
Y dumpea también la de el like, a ver que contiene. Estamos usando un ejemplo de manual, cualquier fallo debería ser de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 18/05/2014, 20:57
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 6 años, 10 meses
Puntos: 0
Respuesta: Uso de LIKE en mysqli

Agradezco mucho las respuestas de este foro siempre es de gran ayuda encontre una solucion asi

Código PHP:

include("conexion.php");


if(isset(
$_POST['Buscar'])){

$clave $_POST['search'];
$sql "SELECT Count(*),titulo FROM noticias WHERE `contenido` LIKE %".$clave."%'" ;

$stmt $conexion->prepare($sql);

$stmt->execute();
$stmt->bind_result($count,$t);
$data $stmt->fetch();

echo 
$count;
if(
$count>0)
{

if(
$stmt)
{
 
echo 
$count;

echo 
$t;



}
$stmt->close();


}else
echo 
"No resultados para la busqueda!";



con esto imprime el titulo de la noticia que tiene igual palabra clave. si quiero varios resultado uso un ciclo while($data = $stmt->fetch()) y dentro del ciclo imprimo los resultados...
  #11 (permalink)  
Antiguo 18/05/2014, 21:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Uso de LIKE en mysqli

Te sigue faltando algo en la query: No estás abriendo los apóstrofos...
Código PHP:
Ver original
  1. $sql = "SELECT Count(*),titulo FROM noticias WHERE `contenido` LIKE %".$clave."%'" ;
Le falta el primer apostrofo luego del LIKE.
Código PHP:
Ver original
  1. $sql = "SELECT Count(*),titulo FROM noticias WHERE `contenido` LIKE '%".$clave."%'" ;
Me sorprendería que no te haya disparado un error de sintaxis, pero por lo que veo en tu script sigues sin entender el sentido de validar si la query se ejecutó bien, y tampoco capturas los errores posibles devueltos por MySQL.
¿Entendiste alguno de esos dos conceptos o simplemente nos estás posteando un código que no es el que usas realmente?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql, mysqli, select, sql
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 12:23.