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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

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

PHP

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

Q&A

1回答

630閲覧

mysql updateされない

moka_late

総合スコア1

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

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

PHP

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

0グッド

0クリップ

投稿2020/08/09 10:06

編集2020/08/11 09:28

php mysqlを使用して、データベースにデータを保存したいと考えています。

流れとしては
idをデータベースに登録 → ログイン → 質問の回答をデータベースに保存
を想定しています。

現在ログインまでは成功しているのですが、データがアップデートされないままでいます。
特にエラーは出ず、次のページへのデータの受け取りも問題はなさそうです。

where の後のid='".$_SESSION['sub_id'].'" の部分の書き方は、ネットで色々と調べながら書きましたが正直合っているのかわかっていません。
ただ、この部分を消してもアップデートされなかったので、少なくともここだけの問題ではないかなと考えています。

コードの誤字もないはずなので、完全に行き詰ってしまっています。
どなたかアドバイス等いただけるとありがたいです。
よろしくお願い致します。

php

1<?php 2ini_set("display_errors", "On"); 3session_start(); 4session_regenerate_id(true); 5if(isset($_SESSION['login'])==false) 6{ 7 echo 'ログインされていません。'; 8 echo '<a href="../new/sub_login.html">ログイン画面へ</a>'; 9 exit(); 10} 11else 12{ 13 $_SESSION['sub_id']; 14} 15?> 16<!doctype html> 17<html lang="ja"> 18<head> 19<meta charset="utf-8"> 20<style type="text/css"> 21body{ 22 margin-top:100px; 23 margin-left:10%; 24 margin-right:10%; 25} 26table{ 27 border-collapse:collapse; 28 border:2px solid black; 29 width:100%; 30} 31td,th,tr{ 32 border:1px solid black; 33} 34th,td{ 35 padding:20px 10px; 36} 37th{ 38 widrh:30%; 39} 40td{ 41 width:70%; 42} 43han{ 44 font-size:12px; 45 color:red; 46} 47.button{ 48 margin-top:50px; 49 margin-bottom:100px; 50 width:80px; 51 height:50px; 52 font-size:20px; 53 background-color:#EFEFEF; 54 margin-left:45%; 55} 56.button:hover{ 57 background-color:lightgray; 58} 59label{ 60 margin-right:50px; 61} 62input[type="text"]{ 63 width:200px; 64 height:20px; 65 font-size:18px; 66} 67img{ 68 widht:80px; 69 height:50px; 70 display:inline-block; 71} 72.color1{ 73 float:left; 74 padding-left:5s%; 75} 76.color2{ 77 float:right; 78 padding-right:30%; 79} 80h2{ 81 text-align:center; 82} 83</style> 84</head> 85<body> 86<h2>あなたの属性について伺います。</h2> 87<form method="post" action="srs.php"> 88<table> 89<tr> 90 <th>性別</th> 91 <td><label><a>男性</a><input type="radio" name="danjo" value="1" required></label> 92 <label><a>女性</a><input type="radio" name="danjo" value="2"></label> 93 <label><a>その他</a><input type="radio" name="danjo" value="3"></label></td> 94</tr> 95<tr> 96 <th>年齢</th> 97 <td><han>半角入力<han></br> 98 <input type="text" name="age" required></td> 99</tr> 100<tr> 101 <th>学年</th> 102 <td><label><a>1回生</a><input type="radio" name="gakunen" value="1" required></label> 103 <label><a>2回生</a><input type="radio" name="gakunen" value="2"></label> 104 <label><a>3回生</a><input type="radio" name="gakunen" value="3"></label> 105 <label><a>4回生</a><input type="radio" name="gakunen" value="4"></label></td> 106</tr> 107<tr> 108 <th>連絡用メールアドレス</th> 109 <td><han>半角入力</han></br> 110 <input type="text" name="mail" required></td> 111</tr> 112<tr> 113 <th>好きな色</th> 114 <th><div class="color1"><label><input type="radio" name="likecolor" value="1" requied><a></a></label></br> 115 <img src="red.png"> </div> 116 <div class="color2"><label><input type="radio" name="likecolor" value="2"><a></a></label></br> 117 <img src="blue.png"></div></th> 118</tr> 119</table> 120<input type="submit" value="次へ" class="button"> 121</form> 122</body> 123</html>

前のページで適当な値を入れた結果、こちらのページ上には
0array(5) { [0]=> string(1) "1" [1]=> string(2) "21" [2]=> string(1) "1" [3]=> string(3) "aaa" [4]=> string(1) "1" }
といった結果が表示されており、それ以外にエラー等は出ておりません。

php

1<?php 2ini_set("display_errors", "On"); 3session_start(); 4session_regenerate_id(true); 5if(isset($_SESSION['login'])==false) 6{ 7 echo 'ログインされていません。'; 8 echo '<a href="../new/sub_login.html">ログイン画面へ</a>'; 9 exit(); 10} 11else 12{ 13 $_SESSION['sub_id']; 14} 15 16try 17{ 18 19$danjo = $_POST['danjo']; 20$age = $_POST['age']; 21$gakunen = $_POST['gakunen']; 22$mail = $_POST['mail']; 23$likecolor = $_POST['likecolor']; 24 25$danjo = htmlspecialchars($danjo); 26$age = htmlspecialchars($age); 27$gakunen = htmlspecialchars($gakunen); 28$mail = htmlspecialchars($mail); 29$likecolor = htmlspecialchars($likecolor); 30 31$dsn = 'mysql:dbname=aaa;host=localhost;port=3306;charset=utf8'; 32$user = 'aaa'; 33$password = ''; 34$dbh = new PDO($dsn, $user, $password); 35$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 36 37$dbh->beginTransaction(); 38 39$sql = "UPDATE user_data SET danjo=?, age=?, gakunen=?, mail=?, likecolor=? WHERE id='".$_SEIION['sub_id']."'"; 40$stmt = $dbh->prepare($sql); 41$data[] = $danjo; 42$data[] = $age; 43$data[] = $gakunen; 44$data[] = $mail; 45$data[] = $likecolor; 46$stmt->execute($data); 47 48echo $stmt->rowCount(); 49 50var_dump($data); 51 52$dbh = null; 53 54$dbh->commit(); 55} 56 57catch(Exception $e) 58{ 59 $dbh->rollBack(); 60 echo $e->getMessage(); 61 62} 63 64?>

![イメージ説明]

イメージ説明
phpmyadminの設定はこのようになっています。

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

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

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

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

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

sazi

2020/08/09 11:14

idは文字型で扱っているようですが、書式が指定(例えば'00001'とか)されていたりしませんか?
moka_late

2020/08/11 03:52

お返事が遅くなり申し訳ございません。 書式は特に触っていないので指定はされていません。
sazi

2020/08/11 04:01

updateの直前に、同じ条件でselectして結果が返却されるかどうかを確認してみてください。
moka_late

2020/08/11 08:32

直前に$sql = "SELECT danjo, age, gakunen, mail, likecolor FROM user_data WHERE id='".$_SESSION['sub_id']."'";と入力しましたが、画面上に表示されるものは変わりありませんでした。
sazi

2020/08/11 09:06 編集

> 画面上に表示されるものは変わりありませんでした。 いえ、同じ条件でHITするものがあるかどうかを確認して下さいという事です。 SQL直接でも良いのですが、条件はプログラムで生成されているものを使用した方が良いので。 要はデバッグして下さいという事です。
guest

回答1

0

where の後のid='".$_SESSION['sub_id'].'" の部分の書き方は、ネットで色々と調べながら書きましたが正直合っているのかわかっていません。

コードを見ると

php

1WHERE id='".$_SEIION['sub_id']."'";

変数名が間違ってますね。

昔PHPを扱っていて淡い記憶で恐縮ですがエラーはWebサーバーのアクセスログかエラーログの方も見たでしょうか。

投稿2020/08/09 10:16

aokikenichi

総合スコア2240

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問