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

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

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

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

PHP

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

Q&A

1回答

1713閲覧

phpからデータベースの更新がうまくいかない

fdaf_11111

総合スコア16

MySQL

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

PHP

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

0グッド

0クリップ

投稿2016/10/22 20:28

データベースの更新機能が正常に動作しません。
データベースの接続、表示はうまくいきました。原因がわかりません。

php

1<?php 2class DB{ 3 //mysqlとやりとりをするクラス 4 private $USER="*"; 5 private $PW ="*"; 6 private $dns="mysql:dbname=*;host=localhost;charset=utf8"; 7 8 //pdoのインスタンスをつくる関数 9 private function Connectdb(){ 10 try{ 11 $pdo=new PDO($this->dns,$this->USER,$this->PW); 12 return $pdo; 13 }catch(Exception $e){ 14 return false; 15 } 16 } 17 //sqlを実行する関数 18 public function executeSQL($sql,$array){ 19 try{ 20 if(!$pdo=$this->Connectdb())return false; 21 $stmt=$pdo->prepare($sql); 22 $stmt->execute($array); 23 return $stmt; 24 }catch(Exception $e){ 25 return false; 26 } 27 } 28} 29 30?>

以下では上記のclass DBを引き継いで使用しています。

php

1<?php 2require_once('db.php'); 3class DBGoods extends DB{ 4 5public function UpdateGoods(){ 6 7 $sql="update Project set name = :name where ProjectID= :id"; 8 $array=array(':name'=> $_POST['form'], ':name'=> $_POST['id']); 9 parent::executeSQL($sql, $array); 10 } 11}

フォームに入力した値を$_POST['form']として取得し、データベースのupdateしたいところを$_POST[id]で取得しています
ちなみに上のコードの$_POST['form'], $_POST['id']の要素は2つとも正しく取得できています。

php

1<?php 2require_once('db2.php'); 3$dbgoods=new DBGoods(); 4 5//値更新 6if(isset($_POST['sub'])){ 7 $dbgoods->UpdateGoods(); 8} 9 10?>

データベースをみても入力した値がデータベース上で更新
されてません

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

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

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

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

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

guest

回答1

0

凡ミスでは?

php

1 $array=array(':name'=> $_POST['form'], ':id'=> $_POST['id']);

投稿2016/10/22 21:06

編集2016/10/22 21:09
fromageblanc

総合スコア2724

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

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

fdaf_11111

2016/10/22 21:14

ここのミスが原因ではないようです
fromageblanc

2016/10/22 21:32

エラーが出ないなら、sql文を直でコンソールから打ってみてはいかがでしょうか。
popobot

2016/10/22 21:55

そもそも:nameが2つあってエラーがでないことがおかしいと思います。 以下のPOSTデータにsubがそもそもないってことはないですか? if(isset($_POST['sub'])){ $dbgoods->UpdateGoods(); }
hnw

2016/10/23 03:55

debugDumpParamsで出力してみては?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問