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

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

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

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

4回答

1364閲覧

Notice、Fatalの2つのエラー解消ができません。

akkorosuke12

総合スコア6

PHP

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2020/01/31 03:08

編集2020/02/02 01:06

前提・実現したいこと

「気づけばプロ並みPHP」という本でECサイトを作る練習をしているのですが、下記のエラーからどうしても抜け出せなくなってしまいました。入力ミス等確認しましたが、自分ではミスを見つけることができず、質問をさせてください。

最初のエラーは変数未定義のエラーだと思いますが、同様のコードを使用した他のページではエラー発生はしませんでした。

2つ目のエラーは1つ目が解消すれば治りますでしょうか。それとも別エラーでしょうか。

どうぞご確認とアドバイスをお願いします。

発生している問題・エラーメッセージ

Notice: Undefined index: price in /Applications/MAMP/htdocs/product/pro_add_done.php on line 11 Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'price' at row 1 in /Applications/MAMP/htdocs/product/pro_add_done.php:25 Stack trace: #0 /Applications/MAMP/htdocs/product/pro_add_done.php(25): PDOStatement->execute(Array) #1 {main} thrown in /Applications/MAMP/htdocs/product/pro_add_done.php on line 25

該当のソースコード

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ろくまる農園</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="root"; $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; echo $pro_name . "を追加しました。<br>"; } catch(Exseption $e){ echo "ただいま障害により大変迷惑をおかけしております(" . $e->getMessage() . ")"; exit(); } ?> <a href="pro_list.php">戻る</a> </body> </html> ### 試したこと 入力ミス等確認 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答4

0

回答ではないです
参考にしている書籍は実装上の「アンチパターン」が複数含まれており、teratail でもよく指摘されています。

副読本と合わせて読むと理解が進むようなので、試してみては?
気づけばプロ並みPHP 副読本:お助け電子BOOKへの寄稿の顛末

ただ、すでにずいぶん古い本なので、php 7 系を対象にした新しい教本で学ぶことをおすすめします。

投稿2020/01/31 03:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

akkorosuke12

2020/01/31 03:45

エラー発生が多いとは読んでいましたが…完全に詰まりました。ありがとうございます。DLし参考にしながら進めたいと思います。
退会済みユーザー

退会済みユーザー

2020/01/31 14:30

3年前に改版しとるよ(PHP7なにそれ、PHP5の書き方でもいいのよとか本の中に記載されてたな:アマゾンのなかみでみたらかいてあった)
akkorosuke12

2020/02/02 01:08

asahina1979さん、ありがとうございます。 改訂版を購入しています。
退会済みユーザー

退会済みユーザー

2020/02/02 01:44

初学者向けの本として3年前の本は古いです。 が、新しい本を買うこともありません。 基礎用語が正しく使えるようになれば、公式を頼ると良いです。 学習方法としてオススメなのは、以下のステップで進めることです。 参考: https://qiita.com/te2ji/items/7158d8dcf6666683b16b#%E5%AD%A6%E7%BF%92%E6%96%B9%E6%B3%95%E3%81%A8%E3%81%97%E3%81%A6%E3%82%AA%E3%82%B9%E3%82%B9%E3%83%A1%E3%81%AA%E3%81%AE%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%A7%E9%80%B2%E3%82%81%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99
guest

0

直接の回答ではないです。
初期の問題のほとんどは下記3つを徹底すれば自分で解決できるようになります。

エラーの意味が分かる
→PHPマニュアルのどこを参照すべきか決まる
→想定通りの情報が渡っているか確認する
→対応方法の策定

この繰り返しです。

熟練者でも1発で全ての原因を究明出来ることって少ないです。
構文エラー程度ならIDE導入すれば実行前に教えてくれるので活用すべき、くらいですけど、
他は、エラー読んで、PHPマニュアル確認して、デバッグ を繰り返しています。

まずは全体の流れが間違いないか確認し、1行ずつコードの正当性を確認していっては如何でしょうか。

蛇足:
ちなみにteratailで「ろくまる農園」って探すと現時点で32件でてくるんですね。
私もかの書籍からでた質問に回答したことがありますが、「本当にその書籍がその通りのコードならどう見ても気づいたらずっと初心者でしかないな」と感じながら答えてました。
タイトルだけに踊らされないようにしましょう。
「○日間でできる」とかその類の文句はなんら実現性も信憑性もありません。
野球選手も本を読んだからってホームランを打てるようになるわけではありません。それと同じです。

投稿2020/01/31 08:34

編集2020/01/31 11:49
m.ts10806

総合スコア80765

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

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

akkorosuke12

2020/02/02 01:29

ご指摘ありがとうございます。数時間エラー解消に務めましたがどうしても分からずに質問させていただきました。今後もできる限り自身での解決に努めます。
guest

0

ベストアンサー

noticeは重要なエラーではありません
そんな変数宣言されてないけどホントに大丈夫?という注意です
$_POST["price"]がおそらく送られてきていません。

Fatalの方はname,priceに値を渡すのに疑問符が3つ指定されているので
おかしいです

投稿2020/01/31 03:14

yambejp

総合スコア114581

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

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

yambejp

2020/01/31 03:15

> $pro_price=$_POST["price"]; $pro_price=filter_input(INPUT_POST,"price"); 的な書き方を心がけてください
akkorosuke12

2020/01/31 03:43

回答ありがとうございます。 >Fatalの方はname,priceに値を渡すのに疑問符が3つ指定されているので おかしいです 修正しましたが、エラーは変わらず出たままです。。 また、良い書き方のアドバイスもありがとうございます。今後使用させていただきます。
yambejp

2020/01/31 03:49

質問文書き換えていいので $sql='INSERT INTO mst_product(name,price) VALUES (?,?)'; とした上で、きちんとマークダウンしてください (ソースの前後行に```をつける)
akkorosuke12

2020/02/02 01:10

何度も教えていただいてありがとうございます!本文修正ができるのを知らずに失礼しました。
akkorosuke12

2020/02/02 01:26

先程ご指摘のとおりに再度トライしましたら、エラー解消されました。 何度もご指摘ありがとうございます!
guest

0

ここの部分がname,priceしか指定してないのにVALUESの数がおかしいからでは?

php

1$sql='INSERT INTO mst_product(name,price) VALUES (?,?,?)';

投稿2020/01/31 03:11

sola-msr

総合スコア876

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

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

akkorosuke12

2020/01/31 03:44

回答ありがとうございます! 修正しましたが、まだエラーが出たままです。ご確認いただけますでしょうか。。 Notice: Undefined index: price in /Applications/MAMP/htdocs/product/pro_add_done.php on line 11 Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'price' at row 1 in /Applications/MAMP/htdocs/product/pro_add_done.php:25 Stack trace: #0 /Applications/MAMP/htdocs/product/pro_add_done.php(25): PDOStatement->execute(Array) #1 {main} thrown in /Applications/MAMP/htdocs/product/pro_add_done.php on line 25
sola-msr

2020/01/31 03:51

priceカラムがint型とか?に対して文字列をいれようとかしてませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問