Я пытаюсь получить ассоциативный массив из SQL-запроса, используя подготовленные операторы. Ничего из того, что я пробую, не работает. Мне удалось заставить это работать до того, как я реализовал подготовленные операторы. Я читаю много противоречивой информации, а также информацию OO и PDO, которая, похоже, не работает с процедурным кодом. Я могу переключиться на один из этих стилей в будущем, но я не хочу прямо сейчас переписывать весь этот веб-сайт. Любая помощь приветствуется. У меня есть item_template.php, который читает данные с помощью строк ['name'], rows ['type'] и т.д. Он работал mysqli_fetch_assoc ... Я просто не могу заставить fetch_assoc работать с подготовленным оператором.
if ($searchname == NULL) {
echo 'You must enter something to search for!';
}else{
$sql = "SELECT * FROM itemdb WHERE name LIKE ?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: viewresults.php?error=sqlerror2");
exit();
}
else{
$searchname = "%".$searchname."%";
mysqli_stmt_bind_param($stmt,"s", $searchname);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultcheck = mysqli_stmt_num_rows($stmt);
echo $resultcheck;
if ($resultcheck == 0) {
echo 'No results found! Try again! ' . $resultcheck;
exit();
}else{
$result = mysqli_stmt_get_result($stmt);
echo $result;
while ($row = mysqli_fetch_assoc($stmt)) {
include("item_template.php");
echo "SUCCESS";
}
}
}
}
Я попытался использовать mysqli_fetch_assoc с mysqli_stmt_store_result, но безуспешно. Я думал, что это будет mysqli_result. У меня не было проблем, когда я не использовал заранее подготовленные операторы ... Вот что меня вывело из ума. Я не знаю, что делаю, и думаю, что я в чем-то запутался, лол. Я пытался понять это вечно. Большинство примеров и помощи, которые я нахожу, - это OO и PDO, которые имеют достаточно различий, чтобы не помогать.
замените while ($ row = mysqli_fetch_assoc ($ stmt)) на WHILE (null! == ($ row = mysqli_fetch_assoc ($ stmt)))
По-прежнему не работает. Это почти то же самое, что у меня, только в другом формате?
Вы пытаетесь получить данные из оператора, а не результат - mysqli_fetch_assoc($stmt) должен быть mysqli_fetch_assoc($result)






Какую кодировку вы используете в своей БД? Я использую utf8_general_ci и кириллицу. Так
mysqli_set_charset($conn, "utf8");
сразу после того, как мне помогает $conn=mysqli_connect();
Что такое
$stmt? Какой параметр ожидаетmysqli_fetch_assoc? (Подсказка, это mysqli_result).var_dump- ваш друг.