herokuでは画像が生成されません。
そのため、パスを保存して画像を表示するという方法が通用しません。
なので、DBに画像のパスを保存するのではなく、
画像のバイナリデータを保存する方法を採用します。
index.html
<form method="post" action="../test.php" enctype="multipart/form-data">
<input type="file" name="image_name" accept="image/*" multiple>
<input type="submit" value="編集完了">
</form>
画像ファイルを選択して、編集完了ボタンを押すとtest.php
に遷移します。
test.php
<?php
$image = base64_encode(file_get_contents($_FILES['image_name']['tmp_name']));
$dbh = db_connect();
$sql = "UPDATE user
SET image = :image
WHERE id = :user_id";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(
':image' => $image,
':user_id' => $_SESSION['user_id'];
));
reload();
?>
base64_encode
で画像パスをエンコードした値をDBに保存しています。
index.php
<img class="mypage" src="data:image/jpeg;base64,<?= $current_user["image"]; ?>">
src属性にdata:image/png;base64,
を指定して、DBからバイナリデータを取得すれば画像が表示されます。
参考URL