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

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

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

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

PHP

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

Q&A

解決済

1回答

595閲覧

phpでデータベースに接続してデータを追加したい

ShotaTakasaki

総合スコア21

MySQL

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

PHP

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

0グッド

0クリップ

投稿2020/04/20 08:03

以下のphpでデータベースに接続してデータを追加したいのですができません
tryの中の何かがおかしいのか、実行するとcatchの中の処理が実行されてしまい、
データベースにも値が追加されません。
まだphpを始めたばかりで、どうして良いのか検討がつきません。
どなたか、親切な方よろしくお願いします

ちなみにxamppでやっていてデータベースは画像のように作成しています
イメージ説明

商品を追加すると画像のようになってしまいます
イメージ説明

pro_add_done.php
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; "charset="utf-8"> <title>Flitch</title> </head> <body> <?php try { $pro_name=$_POST['name']; $pro_price=$_POST['price']; $pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8'); $pro_price=htmlspecialchars($pro_price,ENT_QUOTES,'UTF-8'); $dsn='mysql:dbname=shop;host=localhost;charset=utf8'; $user='root'; $password=''; $dbh=new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql='INSERT INTO mst_product(name,price) VALUES(?,?)'; $stmt=$dbh->prepare($sql); $data[]=$pro_name; $data[]=$pro_price; $stmt->execute($data); $dbh=null; print$pro_name; print'を追加しました。<br />'; } catch(Exception $e) { print'ただいま障害により大変ご迷惑をお掛けしております。'; exit(); } ?> <a href="pro_list.php">戻る</a> </body> </html>

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

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

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

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

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

kai0310

2020/04/20 13:52

MAMPまたはXAMPPもしくは、他の物など、、、 何を使用していますでしょうか?
guest

回答1

0

ベストアンサー

PHP

1 catch(Exception $e) 2 { 3 print'ただいま障害により大変ご迷惑をお掛けしております。'; 4 exit(); 5 } 6

PHP

1 catch(Exception $e) 2 { 3 echo $e->getMessage(); 4 echo $e->getTraceAsString(); 5 exit(); 6 } 7

と言う感じすると例外の詳細が見えるようになるので、表示される例外メッセージに沿ってデバッグしてみてください。

PHPマニュアル 例外(exceptions)
をまずは読んで例外の扱い方を把握しつつ、
PHP デバッグ 例外
辺りで検索してみて、デバッグ方法を把握してみてください。
(開発の大部分の時間はデバッグに費やされるのが普通です。その9割5分くらいは例外やエラーメッセージをきちんと読めば解決にたどり着けますので、デバッグの仕方を学習するのはかなり効率が良い方法になります。)

投稿2020/04/20 08:24

tanat

総合スコア18713

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

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

ShotaTakasaki

2020/04/21 06:39

Notice: Undefined index: gazou_name in /opt/lampp/htdocs/product/pro_add_done.php on line 13 SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'gazou' cannot be null#0 /opt/lampp/htdocs/product/pro_add_done.php(29): PDOStatement->execute(Array) #1 {main} と出ました 恐らくデータベースの値が空欄でエラーということのようなのですが、その場合どうするのが良いのでしょうか。
tanat

2020/04/21 06:46

NULLが許可されていないのであれば A. テーブル定義を変更してNULLを許可してあげる(phpMyAdminなら、gazouフィールドの変更リンクから変更出来ると思います) B. 入力フォーム側の仕様を変更して、gazouに入るべきデータを必須入力させる のどちらかですね。 どちらが正しいかはアプリケーション仕様によるので、そこはどちらが正しいかを設計する必要があります。
tanat

2020/04/21 07:14

フォームの仕組みを1から説明するのは回答欄的に困難ですし、teratailの趣旨と異なっていると思います。 質問を拝見する限り、理解が機能に追いついていないように見受けられますので、もう少し前のページに戻って、フォームの仕組みそのものを把握される事をお勧めします。
ShotaTakasaki

2020/04/21 08:28

わかりました。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問