**入門書の記述通りにprepareメソッドを実行しましたが、
Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\shop\shop_form_done.php:96 Stack trace: #0 {main} thrown in C:\xampp\htdocs\shop\shop_form_done.php on line 96
と表示され、実行できません。
該当行はコメントにて「ココ」と書いてあります。96行目です。
メンバーメソッドがnullだというような意味だと思いますが、具体的にはどういうことかわからず、困っています。立て続けに投稿しすべて回答いただき、大変感謝しております。恐縮ですが、これについてもどなたかご存じであれば知恵をお貸しいただけると幸いです。**
ソースコード
php7.4
<?php
session_start();
session_regenerate_id(true);
?>
<!DOCTYPE html>
<html>
<head><meta charset=UTF-8>
<title>ろくまる農園</title>
</head>
<body>
<?php
try
{
require_once('../common/common.php');
$post = sanitize($_POST);
$onamae=$post['onamae'];
$email=$post['email'];
$postal1=$post['postal1'];
$postal2=$post['postal2'];
$address=$post['address'];
$tel=$post['tel'];
print $onamae.'様'.'<br />';
print 'ご注文ありがとうございました。<br />';
print $email.'にメールを送りましたのでご確認ください。<br />';
print '商品は以下の住所に発送させていただきます。<br />';
print $postal1.'-'.$postal2.'<br />';
print $address.'<br />';
print $tel.'<br />';
$honbun='';
$honbun.=$onamae."様\n\nこの度はご注文ありがとうございました。\n";
$honbun.="\n";
$honbun."ご注文商品\n";
$honbun.="---------------------\n";
$cart=$_SESSION['cart'];
$kazu=$_SESSION['kazu'];
$max=count($cart);
$dsn = 'mysql:host=localhost;dbname=shop;charset=utf8';
$user = 'root';
$password = '';
$dbh = new PDO ($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
for ($i=0;$i<$max;$i++)
{
$sql = 'SELECT name,price FROM mst_product WHERE code=?';
$stmh=$dbh->prepare($sql);
$data[0]=$cart[$i];
$stmh->execute($data);
$rec = $stmh->fetch(PDO::FETCH_ASSOC);
$name=$rec['name'];
$price=$rec['price'];
$kakaku[]=$price;
$suryo=$kazu[$i];
$shokei=$price * $suryo;
$honbun.=$name.' ';
$honbun.=$price.'円 x';
$honbun.=$suryo.'個=';
$honbun.=$shokei.'円\n';
}
$sql='INSERT INTO dat_sales (code_member,name,email,postal1,postal2,address,tel) VALUES(?,?,?,?,?,?,?)';
$stmh=$dbh->prepare($sql);
$data=array();
$data[]=0;
$data[]=$onamae;
$data[]=$email;
$data[]=$postal1;
$data[]=$postal2;
$data[]=$address;
$data[]=$tel;
$stmh->execute($data);
$sql='select last_insert_id()';
$stmh=$dbh->prepare($sql);
$stmh->execute();
$rec = $stmh->fetch(PDO::FETCH_ASSOC);
$lastcode=$rec['last_insert_id()'];
$dbh = null;
for($i=0;$i<$max;$i++)
{
$sql='INSERT INTO dat_sales_product (code_sales,code_product,price,quantity) VALUES (?,?,?,?)';
$stmh=$dbh->prepare($sql); //<=ココ
$data=array();
$data[]=$lastcode;
$data[]=$cart[$i];
$data[]=$kakaku[$i];
$data[]=$kazu[$i];
$stmh->execute($data);
}
$dbh = null;
$honbun.="送料は無料です。\n";
$honbun.="--------------------\n";
$honbun.="\n";
$honbun.="代金は以下の口座にお振込みください。\n";
$honbun.="ろくまる銀行 やさい支店 普通口座1234567\n";
$honbun.="\n";
$honbun.=" \n";
$honbun.=" ~安心のろくまる農園~\n";
$honbun.="\n";
$honbun.="〇〇件六丸郡六丸村123-4\n";
$honbun.="電話 090-6060-xxxx\n";
$honbun.="メールinfo@rokumarunouen.co.jp\n";
$honbun.=" \n";
//print '<br />';
//print nl2br($honbun);
$title='ご注文ありがとうございます。';
$header='From:info@rokumarunouen.co.jp';
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_send_mail($email,$title,$honbun,$header);
$title='お客様からご注文がありました。';
$header='From:'.$email;
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_send_mail('info@rokumarunouen.co.jp',$title,$honbun,$header);
}
catch(Exception $e)
{
print 'ただいま障害により大変ご迷惑をお掛けしております。';
exit();
}
?>
</body>
</html>