作りたいもの・・・ECサイトでのカート機能
困っていること・・・商品をカートに入れると在庫が1つ減るように作りたいが、コードが上手く進まない
以下ソースコード(一部)
if($_SERVER['REQUEST_METHOD'] === 'POST'){ $sql = 'INSERT INTO ec_cart (item_id , user_id , amount , create_datetime , updatetime) VALUES(?,?,?,NOW(),NOW())'; $stmt = $dbh->prepare($sql); $stmt->bindValue(1,intval($_POST['item_id']), PDO::PARAM_STR); $stmt->bindValue(2, 1, PDO::PARAM_STR); //SESSIONを使ってuser_idを入れる $stmt->bindValue(3, intval($_POST['item_money']) , PDO::PARAM_STR); $stmt->execute(); $sql = 'SELECT * FROM item_stock WHERE item_id = ?;'; $stmt = $dbh->prepare($sql); $stmt->bindValue(1,intval($_POST['item_id']), PDO::PARAM_STR); $stmt->execute(); $rows = $stmt->fetchAll(); foreach ($rows as $row) { $data[] = $row; } var_dump($data); $stock = $data['item_stock'] ; //★ここでエラーが発生 if($stock > 0){ $stock = intval($rows['item_stock']) - 1;//UPDATEをしていく $sql = 'UPDATE item_stock SET item_stock = '. $stock . ' WHERE item_id =' . intval($_POST['item_id']) . ';' ; } }
★をつけた部分で、以下のようなエラーメッセージが起きる
Notice: Undefined index: item_stock in
直前のvar_dumpでdataの中に数値が入っていることは確認済み(以下var_dumpの中身)
array(1) { [0]=> array(8) { ["item_id"]=> int(1) [0]=> int(1) ["item_stock"]=> int(10) [1]=> int(10) ["create_datetime"]=> string(19) "2020-04-24 22:24:25" [2]=> string(19) "2020-04-24 22:24:25" ["updatetime"]=> NULL [3]=> NULL } }
どのようにすれば、スムーズに在庫を1つ減らすことができるのかご教授いただきたいです。
回答2件
あなたの回答
tips
プレビュー