Предостережение -
- гуглил это много раз
- просмотрел несколько ответов в переполнении стека (знаю, возможно, не выглядел достаточно сложно)
- посмотрел в w3schools at готовые заявления
- проверили несколько онлайн-уроков по подготовленным заявлениям в PHP
- , работали с местным разработчиком, который хорошо знает SQL, но не PHP, чтобы debug
- работал с местным инженером-программистом, обладающим некоторыми знаниями 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 или в чем-либо другом ничего не происходит, просто нет совпадений, и в БД определенно есть элементы, которые будут соответствовать.
Где-нибудь, где я иду не так ??
спасибо!