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

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

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

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

PHP

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

Q&A

解決済

2回答

1744閲覧

PDOのsql文が実行されていないのか結果に反映されません

tunnel

総合スコア30

MySQL

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

PHP

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

0グッド

0クリップ

投稿2019/05/15 03:04

編集2019/05/15 04:10

上のコードが編集ページで、真ん中のコードが編集すると遷移する編集実行ページです。下は共通のファイルです。

エラーは出ないのですが、編集しても他のページやデータベースで確認しても元のままになっています。

php

1//update.php 2<?php require('dbconnect.php'); ?> 3<!doctype html> 4<html lang="ja"> 5<head> 6 <meta charset="utf-8"> 7</head> 8<body> 9 <main> 10 <h2>practice</h2> 11 <?php 12 if (isset($_REQUEST['id']) && is_numeric($_REQUEST['id'])) { 13 $id = $_REQUEST['id']; 14 15 $memos = $db->prepare('SELECT * FROM memos WHERE id=?'); 16 $memos->execute(array($id)); 17 $memo = $memos->fetch(); 18 } 19 ?> 20 <form action="update_do.php" method="post"> 21 <input type="hidden" name="id" value="<?php echo $id; ?>"> 22 <textarea name="memo" cols=50 rows=10><?php echo $memo['memo']; ?></textarea><br> 23 <button type="submit">登録する</button> 24 </form> 25 </main> 26</body> 27</html> 28

php

1//update_do.php 2<?php require('dbconnect.php'); ?> 3<!doctype html> 4<html lang="ja"> 5<head> 6 <meta charset="utf-8"> 7</head> 8<body> 9 <main> 10 <h2>practice</h2> 11 <?php 12 $statement = $db->prepare('UPDATE memos set memo=? WHERE id=?'); 13 $statement->execute(array($_POST['memo'], $_POST['id'])); 14 ?> 15 <p>メモの内容を変更しました</p> 16 <P><a href="index.php">戻る</a></p> 17 </main> 18</body> 19</html> 20

php

1//dbconnect.php 2<?php 3try { 4 $db = new PDO('mysql:dbname=mydb;host=localhost;charset=utf8', 'root', 'root'); 5} catch (PDOException $e) { 6 echo 'DB接続エラー:' . $e->getMessage(); 7} 8?> 9

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/05/15 03:11

コードブロックのところでphpコメントなどで、そのコードが納まっているファイル名を書いてもらうと理解の助けになります。また、dbconnect.phpで$dbをどうやって作っているかによって適切かどうかも判断つくかと。
guest

回答2

0

いろいろ突っ込みどころが満載(10やそこらじゃ足りない)ですが
とりあえず$dbがpdoのインスタンスだとすると$dbに
エラーモード設定がされていない可能性もあるので

<?php

$statement = $db->prepare('UPDATE memos set memo=? WHERE id=?');
$statement->execute(array($_POST['memo'], $_POST['id']));
?>

の箇所はこう書き換えてくださいい

PHP

1<?PHP 2try{ 3 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 4 $statement = $db->prepare('UPDATE memos set memo=? WHERE id=?'); 5 $statement->execute(array($_POST['memo'], $_POST['id'])); 6}catch(PDOException $e){ 7 die($e->getMessage()); 8} 9?>

投稿2019/05/15 03:12

yambejp

総合スコア114574

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

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

退会済みユーザー

退会済みユーザー

2019/05/15 03:19 編集

beginTransaction()してて、commit()してないとかいうオチも考えられたり。
yambejp

2019/05/15 03:44

selectは実行されているのでオートコミットはされているような気がするんですけどね
m.ts10806

2019/05/15 03:47

idがhiddenにきちんと入ってるかどうかも気になりますね。 提示の組みかただとidの初期値がないのでちゃんとREQUESTにわたってなければ未定義エラーおきます。
退会済みユーザー

退会済みユーザー

2019/05/15 03:54

なので、第三者が再現できない状況で回答を寄せるのは、少々危険な気がしてます。
tunnel

2019/05/15 04:42

解決いたしました。 元々、update.phpに飛ぶリンクが無く手打ちでURLを打っていたのですが、詳細ページにリンクを貼りそこからやっていったら更新できました。 mts10806さんのご指摘どおりidがhiddenにきちんと入っていなかったのでしょうか。
m.ts10806

2019/05/25 06:10

>hiddenにきちんと入っていなかったのでしょうか。 ブラウザの「ソースを表示」してみれば分かることです。
guest

0

自己解決

手打ちでURLを作成していたが、リンクを貼りそこから飛ぶようにしたら解決した。

投稿2019/05/15 07:30

tunnel

総合スコア30

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問