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

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

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

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

483閲覧

データベース更新 PHP UPDATE

退会済みユーザー

退会済みユーザー

総合スコア0

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2022/09/25 07:22

編集2022/10/10 10:53

前提

DBについて勉強中です。
PHPでデータ更新をしていますが、うまく反映されません。
エラーは出ていませんが、反映されない状態です。

実現したいこと

UPDATEを使ってデータ更新をしたい。

該当のソースコード

PHP

1<?php 2//PDOインスタンス生成 3$res=""; 4$USER='root'; 5$PW='root'; 6$dnsinfo="mysql:dbname=cafe;host:localhost;charset=utf8"; 7$pdo = new PDO($dnsinfo, $USER, $PW); 8 9//更新処理 10if (isset($_POST['update'])) { 11 try { 12 $sql="UPDATE contacts SET name=?,kana=?,tel=?,email=?,body=?,created_at=? WHERE id=?"; 13 $stmt=$pdo->prepare($sql); 14 $array= array($_POST['name'],$_POST['kana'],$_POST['tel'],$_POST['email'],$_POST['body'],$_POST['created_at'],$_POST['id']); 15 $stmt->execute($array); 16 } catch (Exception $e) { 17 $res=$e->getMessage(); 18 } 19} 20 21//全レコード参照 22try { 23 $sql="SELECT*FROM contacts"; 24 $stmt=$pdo->prepare($sql); 25 $array=null; 26 $stmt->execute($array); 27 $res="<table>\n"; 28 while ($row=$stmt->fetch(PDO::FETCH_ASSOC)) { 29 $res .="<tr><td>".$row['id'] ."</td><td>" .$row['name'] ."</td><td>" .$row['kana'] ."</td><td>" .$row['tel'] ."</td><td>" .$row['email'] ."</td><td>" .$row['body'] ."</td><td>" .$row['created_at'] ."</td>"; 30$res .="</tr>\n"; 31 } 32 $res .="</table>\n"; 33} catch (Exception $e) { 34 $res=$e->getMessage(); 35} 36?> 37 38  39<section> 40 <div class="contact_box"> 41 <h2>お問い合わせ</h2> 42 <form action="update.php" method="post" novalidate> 43 <h3>下記の項目をご記入の上送信ボタンを押してください</h3> 44 <p>送信頂いた件につきましては、当社より折り返しご連絡を差し上げます。</p> 45 <p>なお、ご連絡までに、お時間を頂く場合もございますので予めご了承ください。</p> 46 <p><span class="required">*</span>は必須項目となります。</p> 47 <dl class="information"> 48 <dt> 49 <label for="name">氏名</label> 50 <span class="required">*</span> 51 </dt> 52 <?php if (@$error['name'] === 'blank'): ?> 53 <dd class="error">氏名は必須入力です。10文字以内でご入力ください。</> 54 <?php endif; ?> 55 <dd> 56 <input type="text" name="name" id="name" placeholder="山田太郎" value="<?php echo htmlspecialchars(@$post["name"]); echo $name;?>"> 57 </dd> 58 <dt> 59 <label for="kana">フリガナ</label> 60 <span class="required">*</span> 61 </dt> 62 <?php if (@$error['kana'] === 'blank'): ?> 63 <dd class="error">フリナガは必須入力です。10文字以内でご入力ください。</dd> 64 <?php endif; ?> 65 <dd> 66 <input type="text" name="kana" id="kana" placeholder="ヤマダタロウ" value="<?php echo htmlspecialchars(@$post["kana"]); echo $kana;?>"> 67 </dd> 68 <dt> 69 <label for="tel">電話番号</label> 70 </dt> 71 <?php if (@$error["tel"] === "tel"): ?> 72 <dd class="error">電話番号は0-9の数字のみでご入力ください。</dd> 73 <?php endif; ?> 74 <dd> 75 <input type="text" name="tel" id="tel" placeholder="09012345678" value="<?php echo htmlspecialchars(@$post["tel"]); echo $tel;?>"> 76 </dd> 77 <dt> 78 <label for="email">メールアドレス</label> 79 <span class="required">*</span> 80 </dt> 81 <?php if (@$error['email'] === 'blank'): ?> 82 <dd class="error">メールアドレスは正しくご入力ください。</dd> 83 <?php endif; ?> 84 <?php if (@$error['email'] === 'email'): ?> 85 <dd class="error">メールアドレスは正しくご入力ください。</dd> 86 <?php endif; ?> 87 <dd> 88 <input type="text" name="email" id="email" placeholder="test@test.co.jp" value="<?php echo htmlspecialchars(@$post["email"]); echo $email;?>"> 89 </dd> 90 </dl> 91 <h3>お問い合わせ内容をご記入ください 92 <span class="required">*</span> 93 </h3> 94 <dl class="body"> 95 <?php if (@$error['body'] === 'blank'): ?> 96 <dd class="error">お問い合わせ内容は必須入力です。</dd> 97 <?php endif; ?> 98 <dd> 99 <textarea name="body" id="body"><?php echo htmlspecialchars(@$post["body"]); echo $body;?></textarea> 100 </dd> 101 <dd> 102 <button type="submit" name="update" id="update">更 新</button> 103 </dd> 104 </dl> 105 </form> 106 </div> 107 <?php 108 echo $res; 109 ?> 110 </section> 111

試したこと

配列に自信がなく、created_atやidを消したり追加したりしましたがよくわかりません。

参考書を見ながら進めていますが、つまづいてしまったので、回答をお願いします。

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

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

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

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

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

AbeTakashi

2022/09/25 07:38 編集

HTML側(入力フォーム)のソースコードの提示もお願いします。エラーメッセージも出ないというのであれば、単純にif分の中に処理が来てないのでは?という感じも受けますが、提示されている情報だけでは第三者には判断ができません。質問文は追記や編集ができます。
guest

回答2

0

ベストアンサー

以下の処理をしたら更新されました。
ご対応いただきありがとうございました。

html部分に以下を追加

html

1<input type="hidden" name="id" id="id" value="<?php echo $id;?>" required>

php部分を以下に変更

php

1if (isset($_POST['update'])) { 2 try { 3 $sql="UPDATE contacts SET name=?,kana=?,tel=?,email=?,body=?,created_at=now() WHERE id=?"; 4 $stmt=$pdo->prepare($sql); 5 $array= array($_POST['name'],$_POST['kana'],$_POST['tel'],$_POST['email'],$_POST['body'],$_POST['id']); 6 $stmt->execute($array); 7 } catch (Exception $e) { 8 $res=$e->getMessage(); 9 } 10}

投稿2022/10/10 01:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

PDOのオプションはエラーモード設定して

PHP

1$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

例外はPDOExceptionを拾ってください

PHP

1catch(PDOException $e){

投稿2022/09/26 06:21

yambejp

総合スコア114389

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

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

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

質問する

関連した質問