SELECT ... WHERE LIKE name bind_param

2

I have the following code:

<?php 
$link = new mysqli("localhost", "root", "minhasenha", "meu_db");

$produto = $_GET['q'];

$produto = '%'.$produto.'%';

$busca_produtos = $link->prepare("SELECT id, nome_com from clientes where nome_com LIKE ?");

$busca_produtos->bind_param("i", $produto);

$busca_produtos->bind_result($id, $nome_com);

$busca_produtos->store_result();

if($busca_produtos->num_rows() == 0){

    echo "Nenhum produto encontrado";

} else{

    while ($busca_produtos->fetch()) {
        echo $nome_com;
    }
}
?>

However, I can not do bind_param() along with LIKE of SELECT . Note that I declared the variable $produto above and concatenated with the characters % , but still returns the following message

  

No product found

I wanted to know how to format the code correctly?

    
asked by anonymous 01.08.2017 / 20:45

1 answer

3

Do not use LIKE in numbers (integers, double etc) change i by s . It also failed to call the execute() method after bind_param() because it sends the query to the database without it can not retrieve the result.

Your code should stay:

$busca_produtos = $link->prepare("SELECT id, nome_com from clientes where nome_com LIKE ?");
$busca_produtos->bind_param("s", $produto);
if(!$busca_produtos->execute()){
   echo $busca_produtos->error;
}

$busca_produtos->bind_result($id, $nome_com);

if($busca_produtos->num_rows() == 0){
    echo "Nenhum produto encontrado";
} else{
    while ($busca_produtos->fetch()) {
        echo $nome_com;
    }
}

Relationships:

Select with prepared statements MySQLi

MySQL bind with an array of values

    
01.08.2017 / 20:59