У меня возникла проблема с попыткой получить ссылку на профиль пользователей, которая хранится в базе данных MYSQL.
Я попытался запустить этот код, чтобы выбрать userprofile (где хранится ссылка на изображение профиля пользователей), но при этом возникла ошибка 500.
<?php
$stmt = $DB_con->prepare('SELECT id, userprofile FROM users ');
$stmt->execute();
if($stmt->rowCount() > 0)
{
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
extract($row);
?>
Ссылка сохраняется в столбце userprofile.
HTML (function.php имеет в нем информацию о базе данных):
<?php
include('functions.php');
if (!isAdmin()) {
$_SESSION['msg'] = "You must log in first";
header('location: ../login.php');
}
?>
<!DOCTYPE html>
<html>
<head>
<title> Admin Home</title>
</head>
<body>
<div class="header">
<h2>Admin - Home Page</h2>
</div>
<div class="content">
<!-- notification message -->
<!-- logged in user information -->
<div class="profile_info">
<img src="uploads/<?php echo $row['userprofile']; ?>" class="img-rounded" width="250px" height="250px" />
<div>
<?php if (isset($_SESSION['user'])) : ?>
<strong><?php echo $_SESSION['user']['username']; ?></strong>
<small>
<i style="color: #888;">(<?php echo ucfirst($_SESSION['user']['user_type']); ?>)</i>
<br>
<a href="home.php?logout='1'" style="color: red;">logout</a>
<a href="create_user.php"> + add user</a>
</small>
<?php endif ?>
</div>
</div>
</div>
</body>
</html>
Изображение тестируемого пользователя (Bigfella)
Любые идеи о том, почему он не извлекает ссылку на изображение из базы данных? Заранее спасибо!!
1.) Ошибка 500 - ошибка сервера. Причиной здесь является неправильный синтаксис. Попробуй это:
<?php
...
if($stmt->rowCount() > 0)
{
// Since you want only one row (one user) you can drop the while
$row=$stmt->fetch(PDO::FETCH_ASSOC);
extract($row);
}
?>
2.) Почему вы загружаете значения id
и userprofile
у всех пользователей?
Поскольку вы показываете информацию только одного пользователя за раз, было бы лучше, если бы вы использовали что-то более избирательное:
$stmt = $DB_con->prepare('SELECT 'id', 'userprofile' FROM users WHERE 'email'='.$clean['emailAddress']);
Я закончил решение проблемы 500 Ошибка Не удалось обработать запрос, вместо того, чтобы иметь код в начале, я переместил его ниже <!DOCTYPE html>
и он отлично справился с ошибкой, поэтому я не знаю, что произошло, но теперь он работает! Спасибо всем, кто внес вклад, помогая мне попытаться это исправить! :)
Вам нужно a }
чтобы закрыть цикл while() и другой }
чтобы закрыть оператор if.
В общем случае, чтобы выяснить ошибку PHP 500, если у вас нет доступа к изменению отчета об ошибках или запуску в режиме командной строки (большинство общих хостов не будут предоставлять ни один из вариантов), разделите код на код (или двоичный 1/2 ваши заявления) в то время, пока вы не включите часть его работы и не добавите обратно строку за раз, и, надеюсь, вы сможете найти синтаксическую ошибку. 500 может означать много чего, но с PHP я считаю, что это вообще означает фатальную синтаксическую ошибку.
500 html означает, что при попытке обслуживания страницы на сервере есть некоторая ошибка.
это означает, что вы, вероятно, генерируете ошибочный URL-адрес в
<img src="uploads/<?php echo $row['userprofile'];?>" class="img-rounded" width="250px" height="250px"/>
или на стороне сервера есть переопределение, которое позволяет каждому вызову определенного URL-адреса обслуживаться скриптом.
попробуйте проверить файл .htaccess
если вы используете Apache/HTTPD
$stmt = $DB_con->prepare('SELECT id, userprofile FROM users '); $stmt->execute(); if($stmt->rowCount() > 0) { } while($row=$stmt->fetch(PDO::FETCH_ASSOC)) { } extract($row);
Я все еще вижу ошибку 500, не в состоянии обработать запрос.}
в конце, перед?>