質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

1028閲覧

[PHP]UPDATEができない

mmm022

総合スコア5

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/06/23 08:31

簡単な編集機能を作っています。
POSTで送信した値をUPDATEを使用してDBに反映させたいです。
ですが、エラーはでないもののDBに反映されない状態です…。

POSTで取得できているのかどうか中身の確認を行ったりエラーメッセージの表示等しましたが、問題らしいものは見当たりませんでした。オートコミット機能も有効化されていることを確認しました。
何か初歩的な部分でミスがあるかもしれないのですが、ご協力をお願いしたいです。

edit

1<?php 2 session_start(); 3 4 $company_ID = isset($_POST['company_ID'])? htmlspecialchars($_POST['company_ID'],ENT_QUOTES,'utf-8'):''; 5 6 if($company_ID == 'company_ID'){ 7 header("Location:./test.php"); 8 exit; 9 } 10 11 //DB接続 12 try{ 13 $dbh = new PDO('mysql:dbname=DSS; host=localhost; charset=utf8','maika','powerB1234'); 14 }catch(PDOException $e){ 15 var_dump($e->getMessage()); 16 exit; 17 } 18 $stmt = $dbh->prepare('SELECT * FROM M_COMPANY WHERE company_ID = :company_ID'); 19 $stmt->bindValue(":company_ID",$company_ID); 20 $stmt->execute(); 21 $edit = $stmt->fetchAll(PDO::FETCH_ASSOC); 22 23?> 24<!DOCTYPE html> 25<html> 26 27 <main> 28 <h3>編集</h3> 29 <button type="button" onclick="location.href='./index.php'">戻る</button> 30 <form action="./update.php" method="POST"> 31 32 <!--disabled=グレー読出し表示/readonly=デフォルト読出し表示--> 33 <input type="company_ID" name="company_ID" value="企業ID:<?php echo $edit[0]['company_ID']; ?>" disabled> 34 35 <p>企業名 *</p> 36 <input type="company_name" name="company_name" placeholder="<?php echo $edit[0]['company_name']; ?>" required> 37 38 <p>企業名フリガナ *</p> 39 <input type="company_TL" name="company_TL" placeholder="<?php echo $edit[0]['company_TL']; ?>" required> 40 41 <p>パスワード *</p> 42 <input type="password" name="password" placeholder="<?php echo $edit[0]['password']; ?>" required> 43 44 <p>郵便番号</p> 45 <input type="postal" name="postal" placeholder="<?php echo $edit[0]['postal']; ?>"> 46 47 <p>住所</p> 48 <input type="address" name="address" placeholder="<?php echo $edit[0]['address']; ?>"> 49 50 <p>電話番号</p> 51 <input type="tel" name="tel" placeholder="<?php echo $edit[0]['tel']; ?>"> 52 53 <p>FAX</p> 54 <input type="fax" name="fax" placeholder="<?php echo $edit[0]['fax']; ?>"> 55 56 <p>メールアドレス</p> 57 <input type="email" name="email" placeholder="<?php echo $edit[0]['email']; ?>"> 58 59 <p>担当部署</p> 60 <input type="department" name="department" placeholder="<?php echo $edit[0]['department']; ?>"> 61 62 <p>代表者名</p> 63 <input type="representative" name="representative" placeholder="<?php echo $edit[0]['representative']; ?>"> 64 65 <p>代表者名フリガナ</p> 66 <input type="representative_TL" name="representative_TL" placeholder="<?php echo $edit[0]['representative_TL']; ?>"> 67 68 <p>担当者名</p> 69 <input type="user" name="user" placeholder="<?php echo $edit[0]['user']; ?>"> 70 71 <p>担当者名フリガナ</p> 72 <input type="user_TL" name="user_TL" placeholder="<?php echo $edit[0]['user_TL']; ?>"> 73 74 <p>ホームページURL</p> 75 <input type="url" name="url" placeholder="<?php echo $edit[0]['url']; ?>"> 76 77 78 <button type="sabmit">更新する</button> 79 80 </form> 81 </main> 82 83 </body> 84</html>

update

1<?php 2 session_start(); 3 4 // 値の受け取り 5 $company_ID = isset($_POST['company_ID'])? htmlspecialchars($_POST['company_ID'],ENT_QUOTES,'utf-8'):''; 6 $company_name = isset($_POST['company_name'])? htmlspecialchars($_POST['company_name'],ENT_QUOTES,'utf-8'):''; 7 $company_TL = isset($_POST['company_TL'])? htmlspecialchars($_POST['company_TL'],ENT_QUOTES,'utf-8'):''; 8 $password = isset($_POST['password'])? htmlspecialchars($_POST['password'],ENT_QUOTES,'utf-8'):''; 9 $postal = isset($_POST['postal'])? htmlspecialchars($_POST['postal'],ENT_QUOTES,'utf-8'):''; 10 $address = isset($_POST['address'])? htmlspecialchars($_POST['address'], ENT_QUOTES, 'utf-8'):''; 11 $tel = isset($_POST['tel'])? htmlspecialchars($_POST['tel'], ENT_QUOTES, 'utf-8'):''; 12 $fax = isset($_POST['fax'])? htmlspecialchars($_POST['fax'], ENT_QUOTES, 'utf-8'):''; 13 $email = isset($_POST['email'])? htmlspecialchars($_POST['email'], ENT_QUOTES, 'utf-8'):''; 14 $department = isset($_POST['department'])? htmlspecialchars($_POST['department'], ENT_QUOTES, 'utf-8'):''; 15 $representative = isset($_POST['representative'])? htmlspecialchars($_POST['representative'], ENT_QUOTES, 'utf-8'):''; 16 $representative_TL = isset($_POST['representative_TL'])? htmlspecialchars($_POST['representative_TL'], ENT_QUOTES, 'utf-8'):''; 17 $user = isset($_POST['user'])? htmlspecialchars($_POST['user'], ENT_QUOTES, 'utf-8'):''; 18 $user_TL = isset($_POST['user_TL'])? htmlspecialchars($_POST['user_TL'], ENT_QUOTES, 'utf-8'):''; 19 $url = isset($_POST['url'])? htmlspecialchars($_POST['url'], ENT_QUOTES, 'utf-8'):''; 20 21 //DB接続 22 try{ 23 $dbh = new PDO('mysql:dbname=DSS; host=localhost; charset=utf8','maika','powerB1234'); 24 25 26 $stmt = $dbh->prepare('UPDATE M_COMPANY SET company_name=:company_name, company_TL=:company_TL, password=:password, postal=:postal, address=:address, tel=:tel, fax=:fax, email=:email, department=:department, representative=:representative, representative_TL=:representative_TL, user=:user, user_TL=:user_TL, url=:url WHERE company_ID=:company_ID'); 27 $stmt->bindParam(":company_ID",$company_ID); 28 $stmt->bindParam(":company_name",$company_name); 29 $stmt->bindParam(":company_TL",$company_TL); 30 $stmt->bindParam(":password",$password); 31 $stmt->bindParam(":postal",$postal); 32 $stmt->bindParam(":address",$address); 33 $stmt->bindParam(":tel",$tel); 34 $stmt->bindParam(":fax",$fax); 35 $stmt->bindParam(":email",$email); 36 $stmt->bindParam(":department",$department); 37 $stmt->bindParam(":representative",$representative); 38 $stmt->bindParam(":representative_TL",$representative_TL); 39 $stmt->bindParam(":user",$user); 40 $stmt->bindParam(":user_TL",$user_TL); 41 $stmt->bindParam(":url",$url); 42 43 $stmt->execute(); 44 45 header('location:./index.php'); 46 47 }catch(PDOException $e){ 48 var_dump($e->getMessage()); 49 exit; 50 } 51 52?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

PHP

1print_r($stmt-> errorInfo());

エラーを取得してみては?

投稿2021/07/11 14:15

RYO_U

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

  • DBにはhtmlspecialcharsした値を入れないようにしてください
  • sessionを宣言している割に利用していないようですので
  • ちゃんとした仕組みにするならセッションを活用して下さい
  • try-catchするには$dbhにエラーモード設定が必要です
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  • bindParamするなら型指定をしてください

投稿2021/06/23 08:46

yambejp

総合スコア114585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mmm022

2021/06/23 09:13

yambejp様 ありがとうございます。 ご指摘いただいた通りに修正を行いましたが、以前エラーがでない状態のままDBに反映はされません...。
yambejp

2021/06/24 00:11

質問文のソースを反映したものに修正してください ちゃんと直しているかわからなければ追加回答はできません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問