Поиск в каждом слове строки поиска с помощью PHP mysqli bind_param () - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу, чтобы PHP выполнял поиск каждого слова в строке в базе данных MySQL, используя MySQLi и bind_param()

Если строка поиска some word, PHP ищет some и word

Я нашел этот ответ Поиск по каждому слову поиска с использованием PHP MYSQL Search Query но я не могу использовать его с MySQLi и bind_param()

Это мой код:

if (!empty($search)) {
    $search = "%{$search}%";
    $sql = $conn->prepare("SELECT * FROM `hospitals` WHERE hospname LIKE ?");
    $sql->bind_param("s",$search);
    $sql->execute();
    $result = $sql->get_result();
    $sql->close();
}

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

Чистое решение

$search_arr = explode(" ",$search);
$params = [];
$where = [];

foreach($search_arr as $word)
{
    $where[] = "hospname like ?";
    $params[] = "%$word%";
}
$query = "SELECT * FROM `hospitals` WHERE ".implode($where, " or ");
$sql = $conn->prepare($query);

$sql->bind_param(str_repeat('s', count($params)), ...$params);
$sql->execute();

$result = $sql->get_result();
0 голосов
/ 18 апреля 2019

Это может помочь

if (!empty($search)) {
$search = explode(" ",$search);


$query="SELECT * FROM `hospitals` WHERE hospname";
$params=array();
$params_type="";

foreach($search as $word)
{

    $query.=" like ? or hospname";
    $params_type.='s';

}

$params[]=& $params_type;

$query=rtrim($query, 'or hospname');
$sql = $conn->prepare($query);




foreach($search as $word)
{

    $search_word="%{$word}%";
    $params[]=& $search_word;

}
call_user_func_array(array($sql,'bind_param'), $params);
$sql->execute();

$result = $sql->get_result();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...