% Как оператор mysqli%, возвращающийся неправильно

0

У меня есть запрос, который пытается выполнить поиск по wicard: форма:

<form name="attdate1" action="keyword.php" method="post">
     <input type=text name="hs_data" id="hs_data">
      <button class ='btn btn-lg btn-danger' type ="submit"> Search Records </button>
</form>

Пользователь будет вводить слово для поиска по столбцам базы данных = hs nv vsa. Если совпадение найдено, пользователь получит возвращаемые результаты (в настоящее время в таблице).

Когда я запускаю запрос, я получаю только успешное выражение, но никаких результатов? Я новичок в подготовленных заявлениях и уже получил хорошую помощь здесь. Любая помощь высоко ценится!

мой PHP:

<?php



$mysqli = new mysqli("localhost", "root", "", "test3");

$hs_data=$_POST['hs_data'];
$nv_data=$_POST['hs_data'];
$vsa_data=$_POST['hs_data'];

$query = $mysqli->stmt_init();
//create a prepared statement


$query = "SELECT hs,nv,vsa FROM handover WHERE hs like ? or nv like ? or vsa like ?";



$statement = $mysqli->prepare($query);

   $statement->bind_param('sss',$hs_data,$nv_data,$vsa_data);

//execute query
$statement->execute();

//bind result variables to be printed
$statement->bind_result( $hs,$nv,$vsa);

Print "</br></br></br></br></br><p>Your data is printed successfully</p>";
print '</br></br></br></br></br><table border="1">';

//fetch records
while($statement->fetch()) {
print '<tr>';
print '<td>'.$hs.'</td>';
print '<td>'.$nv.'</td>';
print '<td>'.$vsa.'</td>';

print '</tr>';
}   
print '</table>';

//close connection
$statement->close();

Когда я просто вводим пустой запрос для ввода только двух столбцов в полном объеме. Когда я добавляю слово, я знаю, что я не получаю ничего, кроме моего успешного сообщения

  • 0
    проверьте синтаксис для получения результатов запроса
  • 0
    эти столбцы содержат только данную строку? Потому что, насколько я знаю, prepare не добавляет% для вас, чтобы он действительно выполнял поиск слова в строке.
Теги:
mysqli

1 ответ

1
Лучший ответ

У вас нет никаких подстановочных знаков в сравнении с LIKE. Безлистный LIKE в основном точно такой же, как при использовании =:

fieldname LIKE 'foo'     identical to        fieldname = 'foo'

Вам нужно сделать что-то более похожее:

$hsa = '%' . $_POST['hs_data'] . '%';

или непосредственно в запросе:

WHERE ... hsa LIKE CONCAT('%', ? , '%')
  • 0
    Спасибо, что сработало - просто как дополнение, если у вас есть время, где бы я поместил «нет результатов». Я так привык к старому синтаксису SQL с помощью оператора else.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню