1. Zakładając, że najprostszy zapis elementu <img> wygląda np. tak
<img src="link_do_obrazka" alt="opis obrazka" />
sam zobacz co Twój kod generuje [ on-line ]
// symulacja pobranych rekordów z bazy danych
// $rows = $conn->query($conn, "SELECT img FROM Upload ORDER BY id DESC");
$rows = [
[ 'img' => 'ccccc.jpg' ],
[ 'img' => 'bbbbb.jpg' ],
[ 'img' => 'aaaaa.png' ]
];
foreach ($rows as $row) {
// <img src=img/<?php echo $row['img']; echo $row['img']; ?>
echo '<img src=img/' . $row['img']; echo $row['img'];
}
a teraz spróbuj choćby tak [ on-line ]
echo '<img src="img/' . $row['img'] . '" alt="' . $row['img'] . '" />';
Moim zdanie, dla jednej linii kodu html nie warto się bawić w takie:
<?php ... ?> ... <?php ... ?> itd., nie lepiej zapisać po prostu, np.
<?php
$rows = $conn->query($conn, "SELECT img FROM Upload ORDER BY id DESC");
foreach ($rows as $row) {
$i = 1; $i++;
echo '<img src="img/' . $row['img'] . '" alt="' . $row['img'] . '" />';
}
?>
lub
<?php
$rows = $conn->query($conn, "SELECT img FROM Upload ORDER BY id DESC");
foreach ($rows as $row) {
$i = 1; $i++;
echo "<img src='img/{$row['img']}' alt='{$row['img']}' />";
}
?>
2. Warning: mysqli_connect(): (HY000/2002): Connection refused
P.S. Ten kod linia 6
<?php
$rows = $conn->query($conn, "SELECT img FROM Upload ORDER BY id DESC");
?>
<?php foreach ($rows as $row) : ?>
<?php $i = 1; $i++; ?>
<img src=img/<?php echo $row['img']; echo $row['img']; ?>
<?php endforeach; ?>
będąc w pętli linia 5, 8
<?php
$rows = $conn->query($conn, "SELECT img FROM Upload ORDER BY id DESC");
?>
<?php foreach ($rows as $row) : ?>
<?php $i = 1; $i++; ?>
<img src=img/<?php echo $row['img']; echo $row['img']; ?>
<?php endforeach; ?>
przy każdej kolejnej iteracji pętli $rows as $row, zmienna $i przyjmuje ciągle wartość 1 pomimo $i++
zmienna $i "zachowuje" wartość 2 do momentu rozpoczęcia kolejnej iteracji.