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

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

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

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

Q&A

解決済

2回答

400閲覧

DBに保存できない..

rumi

総合スコア46

PHP

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

0グッド

0クリップ

投稿2017/10/21 05:09

編集2017/10/22 03:57

Chat形式のメッセージ内容をDBに保存するため下記のPHPを記載しています。テーブルtbl_messagesにarrayの内容をinsertしたいのですが、実行してもDBに保存されません。

色々試したところ、description以外はDBに保存できる様ですが、descriptionだけnullになってしまう感じが、問題のようです。(descriptionはtextareaでメッセージを入力する部分です)
HTML側も下記に記載しておりますが、問題点がお分かりかたはご指摘いただけると幸いです。

PHP

1public function sendMessage(){ 2 3 extract($this -> reqData); 4 $desc = (isset($description) && trim($description) != null) ? trim($description) : null; 5 if ($desc != null) { 6 7 $lastId = $this -> db -> insert('tbl_messages', 8 array( 9 'senderId' => $this->sessUserId, 10 'receiverId' => ($this->sessUserId == $this->$receiverID['provider']['userId']) ? $this->$receiverID['provider']['userId'] : $this->$receiverID['userId'], 11 'type' => 'workroom', 12 'subject' => $this->proj['title'] . " - Workroom conversation", 13 'description' => $desc, 14 'createdDate' => date('Y-m-d H:i:s'), 15 'projectId' => $this->proj['id'], 16 ))->lastInsertId(); 17 18 19 if ($lastInsertId > 0) { 20 21 if ($this->dataOnly) { 22 return array( 23 'status' => 1, 24 'msg' => 'Success', 25 26 ); 27 } else { 28 echo json_encode(array( 29 'status' => 1, 30 'msg' => 'undefined', 31 32 )); 33 } 34 } 35 } 36 37 return $html; 38 }

HTML

1 2<form class="chat-form" id="sendMsg"> 3 <div class="form-group"> 4 <textarea name="message" class="form-control" rows="4" id="description" 5 name="description" 6 placeholder="メッセージを入力..." 7 data-validation="validateDescription" 8 data-validation-error-msg="Please check description carefully."></textarea> 9 </div> 10 <div class="form-group text-right"> 11 <input type="hidden" name="action" value="method"/> 12 <input type="hidden" name="method" value="sendMessage"/> 13 <button type="submit" class="btn btn-link" data-ele="sendMessage"> 14 送信 15 </button> 16 </div> 17 </form> 18

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

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

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

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

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

m.ts10806

2017/10/21 05:53

フレームワーク等使っているのであればそちらも環境情報として提示することで回答を得やすくなりますよ(タグもご利用ください)処理自体はどこまで通っているのでしょうか?エラーが出ていないか、想定通りのデータが渡ってきているかご確認のうえ、質問に追記してください。
rumi

2017/10/21 15:16 編集

アドバイスありがとうございます。フレームワークは使っていないです。エラーも出ておらず、ブラウザ上は{"status":1,"msg":"undefined","html":null} となっていますのでうまくDBにinsertされていないのではと感じています。
miyahan

2017/10/22 02:13

自作クラスの一部を切り出して見せられても何をしているのかさっぱりわからないので答えられません。今回の不具合を再現するのに最低限必要なコードを抜き出して提示すると回答が得られやすいと思いますし、その過程で原因に気づくことも多々あります。
rumi

2017/10/22 04:00

こちらアドバイスありがとうございます。Arrayの内容のうち、descriptionがDB保存時にnullになってしまいます。HTMLのコードも追記いたしました。descriptionはtextareaの部分を参照しております。もしお分かりでしたら、宜しくお願い致します。
masaya_ohashi

2017/10/23 01:26

確認ですが、そもそもdbという変数はなんのオブジェクトですか?PDO?PDOにinsertなんてメソッド無いような…
guest

回答2

0

自己解決

正確な部分はわかっていませんが、色々触っているうちに、DBに保存できるようになっていました。

投稿2017/10/23 13:59

rumi

総合スコア46

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

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

0

  • if ($desc != null) {を通っている以上、実際に$descはnullではない
  • 他の値は保存されているのでinsertは成功している

以上二点から推測されるのは、DBのテーブルのデータ定義のdescriptionの「スペルミス」かと思います。コードはdescriptionという値を渡して保存しようとするが、DBのカラム名が間違っているならそこにデータは保存されません。一度tbl_messagesの定義を見直してみてください。

投稿2017/10/23 01:11

masaya_ohashi

総合スコア9206

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

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

rumi

2017/10/23 01:23 編集

コメントいただき、ありがとうございます。 tbl_messages のカラム名を見直して見ましたが、description にスペルミスはなかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問