###前提・実現したいこと
PHPMyadminを使用して、ユーザー情報を編集機能を実装したところ、プロフィール画像のみファイルを読み込みしてもPHPMyadminに編集内容が反映されない状態です。
ちなみにユーザー情報編集のカラムは「ユーザー名」、「メールアドレス」、「プロフィール画像」※です。
※プロフィール画像はユーザー登録時は登録不要にしています。
###発生している問題・エラーメッセージ
■User.php
public function updateUser($post) { $sql = 'UPDATE users SET img = :img, user_name= :user_name, mail= :mail, update_at= :update_at WHERE id= :id'; try{ $date = date("Y-m-d H:i:s"); $stmt = $this->dbh->prepare($sql); $params = array( ':img'=>$post['img'], ':user_name'=>$post['user_name'], ':mail'=>$post['mail'], ':update_at'=>$date, ':id'=>$post['id'] ); $stmt->execute($params); // var_dump($files); // echo "更新しました"; } catch(PDOException $e){ echo "更新失敗".$e->getMessage() ."\n"; exit(); } }
■edit_pf_form.php
<div class="all_wrapper"> <?php require("header.php"); ?> <div class="container"> <div class="user_form"> <h2>会員情報編集</h2> <form action="edit_pf_complete.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="id" value="<?= $_SESSION['login_user']['id'] ?>"> <label for="file"> <i class="fas fa-camera"></i>プロフィール写真を選択 <input name="img" type="file" id="file" accept="image/*" accept=".png, .jpg, .jpeg" required> <div id="file_result"></div> </label> <div class="form_content"> <input class="name" name="user_name" type="text" value="<?= h($name); ?>" placeholder="ユーザー名"> <p class="red required_name"></p> <p class="red count_name"></p> <?php if(isset($err['user_name'])): ?> <p class="red"><?php echo $err['user_name']; ?></p> <?php endif; ?> </div> <div class="form_content"> <input class="mail" name="mail" type="text" value="<?= h($mail); ?>" placeholder="メールアドレス"> <p class="red required_mail"></p> <p class="red error_mail"></p> <?php if(isset($err['mail'])): ?> <p class="red"><?php echo $err['mail']; ?></p> <?php endif; ?> </div> <input type="submit" name="submit" class="submit" value="変更する" onclick="return confirm('会員情報を変更してよろしいですか?')">
■edit_pf_complete.php
<?php $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; if (!parse_url($referer, PHP_URL_HOST) == 'edit_pf_form.php'){ header('Location: top.php'); return; } session_start(); require_once('../Models/User.php'); $err = []; if(!$name = filter_input(INPUT_POST,'user_name')){ $err['user_name'] = 'ユーザー名を入力してください'; }else if(mb_strlen($name) > 10){ $err['user_name'] = '*10文字以内で入力してください'; } $pattern_add = "/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/"; if(!$email = filter_input(INPUT_POST,'mail')){ $err['mail'] = '*メールアドレスを入力してください'; }else if(!preg_match($pattern_add, $email)){ $err['mail'] = '*メールアドレスは正しい形式で入力してください'; } if(count($err) > 0){ $_SESSION['err'] = $err; header('Location: edit_pf_form.php'); return; }else { $user = new UserLogic(); $user->updateUser($_POST,$_FILES); } ?>