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

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

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

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

Q&A

解決済

例外処理が行われてしまう(PHP)

Yashy
Yashy

総合スコア14

PHP

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

1回答

0グッド

0クリップ

126閲覧

投稿2019/03/04 14:22

####「$rec = $stmt->fetch(PDO::FETCH_ASSOC);」で例外処理になってしまう
参考書を写経しており、ググっても解決できずこちらに投稿させていただきました。

95行目の「$rec = $stmt->fetch(PDO::FETCH_ASSOC);」の部分で例外が発生してしまい、なぜ例外処理になるのかわからないでおります。
「print'debug'」を用いて、例外が発生している箇所は95行目だと判断しました。

環境:Mac,XAMPP

PHP

1<?php 2 session_start(); 3 session_regenerate_id(true); 4?> 5<!DOCTYPE html> 6<html> 7<head> 8<meta charset="UTF-8"> 9<title>Yashy農園</title> 10</head> 11<body> 12 13<?php 14 15try 16{ 17 18require_once('../common/common.php'); 19 20$post=sanitize($_POST); 21 22$onamae=$post['onamae']; 23$email=$post['email']; 24$postal1=$post['postal1']; 25$postal2=$post['postal2']; 26$address=$post['address']; 27$tel=$post['tel']; 28 29print $onamae.'様<br />'; 30print 'ご注文ありがとうございました。<br />'; 31print $email.'にメールを送りましたのでご確認ください。<br />'; 32print '商品は以下の住所に発送させていただきます。<br />'; 33print $postal1.'-'.$postal2.'<br />'; 34print $address.'<br />'; 35print $tel.'<br />'; 36 37 38$honbun=''; 39$honbun.=$onamae."様\n\n この度はご注文ありがとうございました。\n"; 40$honbun.="\n"; 41$honbun.="ご注文商品\n"; 42$honbun.="-----------------------------\n"; 43 44$cart= $_SESSION['cart']; 45$kazu= $_SESSION['kazu']; 46$max=count($cart); 47 48$dsn ='mysql:dbname=shop;host=localhost;charset=utf8'; 49$user ='root'; 50$password =''; 51$dbh = new PDO($dsn, $user, $password); 52$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 53 54// print'debug1<br />'; 55 56for($i=0;$i<$max;$i++) 57{ 58 $sql = 'SELECT name,price FROM mst_product WHERE code=?'; 59 $stmt = $dbh->prepare($sql); 60 $date[0]=$cart[$i]; 61 $stmt->execute($date); 62 63 $rec = $stmt->fetch(PDO::FETCH_ASSOC); 64 65 $name = $rec['name']; 66 $price = $rec['price']; 67 $kakaku[]=$price; 68 $suryo = $kazu[$i]; 69 $shokei = $price * $suryo; 70 71 $honbun.=$name.''; 72 $honbun.=$price.'円 ×'; 73 $honbun.=$suryo.'個 ='; 74 $honbun.=$shokei."円\n"; 75} 76 77// print'debug2<br />'; 78 79$sql ='INSERT INTO dat_sales(code_member,name,email,postal1,postal2,address,tel)VALUES(?,?,?,?,?,?,?)'; 80$stmt = $dbh->prepare($sql); 81$data = array(); 82$data[]=0; 83$data[]=$onamae; 84$data[]=$email; 85$data[]=$postal1; 86$data[]=$postal2; 87$data[]=$address; 88$data[]=$tel; 89$stmt->execute($data); 90 91$sql ='SELECT LAST_INSERT_ID()'; 92$sql = $dbh->prepare($sql); 93$stmt->execute(); 94print'debug3<br />'; 95$rec = $stmt->fetch(PDO::FETCH_ASSOC); 96print'debug4<br />'; 97$lastcode=$rec['LAST_INSERT_ID()']; 98 99 100for($i=0;$i<$max;$i++) 101{ 102 $sql ='INSERT INTO dat_sales_product(code_sales,code_product,price,quantity) VALUES(?,?,?,?)'; 103 $stmt = $dbh->prepare($sql); 104 $data = array(); 105 $data[]=$lastcode; 106 $data[]=$cart[$i]; 107 $data[]=$kakaku[$i]; 108 $data[]=$kazu[$i]; 109 $stmt->execute($data); 110} 111 112$dbh = null; 113 114$honbun.="送料は無料です。\n"; 115$honbun.="-----------------------------\n"; 116$honbun.="\n"; 117$honbun.="代金は以下の口座にお振り込みください。\n"; 118$honbun.="ろくまる銀行 野菜視点 普通口座 1234567\n"; 119$honbun.="\n"; 120$honbun.="------------------------------\n"; 121$honbun.="〜安心野菜のロクマル農園〜\n"; 122$honbun.="\n"; 123$honbun.="○◯県ロクマル市123-4\n"; 124$honbun.="電話 000-0000-0000\n"; 125$honbun.="メール info@rokumaru.co.jp\n"; 126$honbun.="------------------------------\n"; 127print'<br />'; 128print nl2br($honbun); 129 130$title ='ご注文ありがとうございます。'; 131$header = 'From:info@rokumarunouen.co.jp'; 132$honbun =html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); 133mb_language('Japanese'); 134mb_internal_encoding('UTF-8'); 135mb_send_mail($email, $honbun, $header); 136 137$title ='お客様からのご注文がありました。'; 138$header = 'From:'.$email; 139$honbun =html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); 140mb_language('Japanese'); 141mb_internal_encoding('UTF-8'); 142mb_send_mail('info@rokumarunouen.co.jp', $honbun, $header); 143 144} 145catch(Exception $e) 146{ 147 print'ただいま障害により大変ご迷惑をおかけしております。'; 148 exit(); 149} 150 151?> 152 153</body> 154</html> 155

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

自己解決

原因はtypoでした。

修正前

$sql ='SELECT LAST_INSERT_ID()'; $sql = $dbh->prepare($sql); $stmt->execute();

修正後

$sql ='SELECT LAST_INSERT_ID()'; $stmt = $dbh->prepare($sql); $stmt->execute();

投稿2019/03/04 15:24

Yashy

総合スコア14

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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