前提・実現したいこと
気づけばプロ並みPHPのchapter6(P195からp205)で躓いています。
商品1つ登録行うと問題なく、商品名、画像、個数がでてくるのですが、
2つ以上商品を登録し、カートの中身を見るとエラーが発生してしまいます。
発生している問題・エラーメッセージ
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\phpshop\shop\shop_cartlook.php on line 45
該当のソースコード
<?php session_start(); // ログイン中の名前を出力 session_regenerate_id(true); if(isset($_SESSION['member_login'])==false){ print 'ようこそゲスト様 '; print '<a href="member_login.html">会員ログイン</a><br>'; print '<br>'; } else { print $_SESSION['member_name']; print 'さん<br>'; print '<a href="member_logout.php">ログアウト</a>'; print '<br>'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <?php // DBサーバーの障害対策 try { $cart=$_SESSION['cart']; $max=count($cart); // データベース接続 $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); foreach($cart as $key=>$val){ $sql='SELECT code,name,price,gazou FROM mst_product WHERE code=?'; **$stmt=$dbh->prepare($sql);** ←ここでエラーがでます。 $data[0]=$val; $stmt->execute($data); $rec = $stmt->fetch(PDO::FETCH_ASSOC); $pro_name[]=$rec['name']; $pro_price[]=$rec['price']; // 画像が空だった場合の処理 if($rec['gazou']==''){ $pro_gazou[]=''; } else { // 画像が登録されていた場合の処理 $pro_gazou[]='<img src= "../product/gazou/'.$rec['gazou'].'">'; } $dbh=null; } // ↓tryここまで } catch(Exception $e) { print 'ただいま障害により、大変ご面倒をおかけしております。<br>'; // 強制終了の命令 exit(); } for($i=0;$i<$max;$i++){ print $pro_name[$i]; print $pro_gazou[$i]; print $pro_price[$i]; print '円'; print '<br>'; } ?> <br> <form> <input type="button" onclick="history.back()" value="戻る"> </form> </body> </html>
試したこと
DBの中身の確認
┗商品は問題なく登録されていました。
入力まちがいがないか、何度か確認をしました。
補足情報(FW/ツールのバージョンなど)
たびたび申し訳ございませんが、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。