Ця стаття присвячена вирішенню проблеми, пов’язаної з відображенням зображень при запиті з бази даних. З часом виникають ситуації, коли розробники зіткнуться з незрозумілими помилками або неправильним відображенням даних на їх веб-сторінках. У цій конкретній ситуації користувач отримує помилку “Fatal error: Uncaught Error: mysqli object is already closed”.
Проблема полягає в тому, що після виконання запиту до бази даних зображення не відображаються на веб-сторінці. У коді наведеному в питанні, відбувається спроба виконання запиту до бази даних, після чого відбувається закриття з’єднання з базою даних за допомогою функції mysqli_close($conn)
. Проте, після цього виконується HTML-код, в якому відбувається спроба відобразити зображення, але з’єднання з базою даних вже закрито, тому запит не вдається виконати.
Рішення цієї проблеми полягає в тому, щоб виконувати всі необхідні запити до бази даних до того, як буде закрите з’єднання. Для цього потрібно перенести закриття з’єднання на кінець PHP-блоку, після виконання всіх запитів до бази даних.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php include 'php/config.php'; session_start(); $columnsel_query = "SELECT * FROM user_form WHERE username = '{$_SESSION["username"]}' AND email = '{$_SESSION["usermail"]}' AND password = '{$_SESSION["password"]}'"; $result = mysqli_query($conn, $columnsel_query); $imagecol = "SELECT * FROM images WHERE username = '{$_SESSION["username"]}'"; if ($result) { $columnsel = mysqli_fetch_assoc($result); if ($columnsel) { $date = $columnsel['Date']; } else { $date = "No date found"; } } mysqli_close($conn); ?> |
Зверніть увагу на те, що закриття з’єднання з базою даних відбувається після виконання всіх запитів та опрацювання результатів. Це дозволяє уникнути помилки, пов’язаної з відображенням зображень.
Тепер ваша веб-сторінка має працювати коректно, і зображення будуть відображатися правильно.