Используйте подстановочные знаки в подготовленных SQL LIKE - PHP - или мой результат сломан? - PullRequest
0 голосов
/ 16 марта 2020

Предостережение -

  1. гуглил это много раз
  2. просмотрел несколько ответов в переполнении стека (знаю, возможно, не выглядел достаточно сложно)
  3. посмотрел в w3schools at готовые заявления
  4. проверили несколько онлайн-уроков по подготовленным заявлениям в PHP
  5. , работали с местным разработчиком, который хорошо знает SQL, но не PHP, чтобы debug
  6. работал с местным инженером-программистом, обладающим некоторыми знаниями SQL для отладки, но безрезультатно

Итак, у меня есть простое представление формы для поиска по столбцу в базе данных - используя LIKE с подстановочными знаками. Я проверил SQL в PHP (предварительно используя подготовленные операторы) и в самом MySQL, и код корректен - SELECT * FROM database.table WHERE Col LIKE '% $ variable%' <- работает. </p>

Сейчас я использую совершенно правильно подготовленные утверждения для использования в реальном мире (я не кодировал PHP за 5 лет, так что это была кривая обучения).

Все мои подготовленные операторы работают, SELECT, INSERT и т. д. c, кроме этого поиска ...

$searchParam = mysqli_real_escape_string($conn, htmlspecialchars($_POST['Search'])); 
$searchStmt = $conn->prepare("SELECT ID, Title FROM insertdatabasenamehere.insertTableNameHere WHERE Title LIKE ?");
$searchItem = '%'.$searchParam.'%';
$searchStmt->bind_param("s", $searchItem);
$searchStmt->execute();
$searchQueryResult = $searchStmt->get_result();

Надеюсь, пока это хорошо, за исключением какого-то смехотворного OMG, почему вы сделали это так ... это должно работать на основе предыдущего подготовил SQL заявления до. Тогда это становится странным.

if ($searchStmt->num_rows > 0) {
    //some html here
    while($row = $searchQueryResult->fetch_assoc()) { 
        // loop through the result set echoing out $title and $ID
    }
} else {
    echo "No result found";
}

Каждый раз - результат не найден. Таким образом, в LIKE или в чем-либо другом ничего не происходит, просто нет совпадений, и в БД определенно есть элементы, которые будут соответствовать.

Где-нибудь, где я иду не так ??

спасибо!

...