Не работает запрос к БД
У меня есть абсолютно обычный вывод из БД, который я выполнял уже не один раз:
$prepare = mysqli_prepare($link, "SELECT products_id, title, image
FROM table_products WHERE type_tovara=?");
mysqli_stmt_bind_param($link, "s", $_GET['type']);
mysqli_stmt_execute($prepare);
mysqli_stmt_bind_result($prepare, $products_id, $title, $image);
mysqli_stmt_fetch($prepare);
echo '<div class="product"><p><a href="good.php?id='.$products_id.'">
'.$title.'</p><img src="img/'.$image.'"></a>
<a href="products.php?id='.$products_id.'">Изменить</a></div>';
die( 'stmt error: '.mysqli_stmt_error($prepare) );
Вот только в этот раз я вижу ошибку:
stmt error: Commands out of sync; you can't run this command now
В чем проблема? Никак не могу понять, что я сделал не так...
P.S.: в сообщении об ошибке сказано, что проблема именно в этой строке:
mysqli_stmt_bind_param($link, "s", $_GET['type']);
Ответы (1 шт):
Автор решения: Anton Shchyrov
→ Ссылка
Подготовленный стейтмент после работы нужно закрывать, чтобы освободить захваченные ресурсы. И параметры нужно биндить для стейтмента, а не для соединения
$prepare = mysqli_prepare($link, .....);
if (!$prepare)
die('stmt error: '.mysqli_error($prepare));
try {
mysqli_stmt_bind_param($prepare, "s", $_GET['type']);
// ^^^^^^^^
.......
} finally {
mysqli_stmt_close($prepare);
}