前提・実現したいこと
product_detailsテーブルから、商品(product_id)ごとの注文数を抽出し、ランキングにしたい。
product_idは3から14。
数量はamount。
発生している問題・エラーメッセージ
いままではこれでデータベースに接続できていたが、できなくなった?
接続データベース先などはfunction.phpにかきこんでいる。
Fatal error: Uncaught Error: Call to undefined function dbConnect() in /var/www/html/ec_site/products/rank.php:6 Stack trace: #0 {main} thrown in /var/www/html/ec_site/products/rank.php on line 6
該当のソースコード
<?php try { $db = dbConnect(); $sql = "SELECT * FROM order_details WHERE product_id = :product_id"; $stmt = $db->prepare($sql); for($i=3; $i<14; $i++){ $stmt->bindParam(':product_id', $i, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetchall(PDO::FETCH_ASSOC); foreach($result as $row){ var_dump(array_sum($row['amount'])); } } } catch (PDOException $e) { echo "接続失敗:" .$e->getMessage(). "\n"; } finally { $db = null; } ?>
function.php ↓
<?php function e(string $str, string $charset = 'UTF-8'): string { return htmlspecialchars($str, ENT_QUOTES | ENT_HTML5, $charset); } function sanitize(array $before): array { foreach($before as $key => $value) { $after[$key] = e($value); } return $after; } function dbConnect() { $dsn = "mysql:dbname=ec_site;host=localhost;charset=utf8"; $user = "root"; $password = "glad"; $db = new PDO($dsn, $user, $password); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; }
補足情報(FW/ツールのバージョンなど)
EC2にRloginで接続し、編集している。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/08 10:36