Пишу поиск на сайте через mysqli.
Код1 (+/-)
if(isset($_POST['phrase']) && $_POST['phrase'] != ''){
$search = '%'.$_POST['phrase'].'%';
if($stmt = $db->prepare("SELECT id, name FROM lectors WHERE name LIKE ?")){
$stmt->bind_param('s', $search);
$stmt->execute();
$stmt->bind_result($id, $name);
if($stmt->num_rows > 0){
while($stmt->fetch()){
echo $id . ' ' . $name . '<br />';
}
}else{
echo 'Ничего не найдено';
}
}else{
echo mysqli_error($db);
}
}Выводит "ничего не найдено", хотя должно вывести 2 строки.
Если же запрос прописать вот так
Код2 (+/-)
if(isset($_POST['phrase']) && $_POST['phrase'] != ''){
$search = $_POST['phrase'];
if($stmt = $db->prepare("SELECT id, name FROM lectors WHERE name LIKE '%?%'")){
$stmt->bind_param('s', $search);
$stmt->execute();
$stmt->bind_result($id, $name);
if($stmt->num_rows > 0){
while($stmt->fetch()){
echo $id . ' ' . $name . '<br />';
}
}else{
echo 'Ничего не найдено';
}
$stmt->close();
}else{
echo mysqli_error($db);
}
}то выскакивает ошибка
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in D:\workspace\web\php\site.dev\search.php on line 17
Как правильно сделать запрос через LIKE в mysqli?