###前提・実現したいこと
PDOでDB接続し、phpでコンバージョンの分析ツールを作成しています。
画面上に「検索ワードトップ10」「症状トップ10」「年齢別トップ10」と、同じ処理を3つ表示させるため、functionを使って処理を行おうとしています。
functionを使用せずに記述した場合は問題なく表示されるのですが、functionを使用すると以下のようなエラーメッセージが表示されてしまいます。
function内でプリペアードステートメントを使って処理する際に、欠けている知識についてご教授願えれば幸いです。
よろしくお願いいたします。
###発生している問題・エラーメッセージ
Fatal error: Call to a member function fetchall() on a non-object in /home/********/www/conversion/index.php on line 34
###該当のソースコード
php
1function topten($str){ 2 global $db; 3 require_once('connect_by_pdo.php'); 4 $template = "SELECT $str,count(*) AS count_num FROM t_conversion WHERE user_id=$user_id GROUP BY $str ORDER BY count_num DESC LIMIT 0,10;"; 5 $stmt = $db->query($template); 6 $row = $stmt->fetchall(PDO::FETCH_ASSOC); 7 foreach($row as $key => $value){ 8 ${$str} = $value['{$str}']; 9 $count_num = $value['count_num']; 10 $all_row .= "<tr><td>${$str}</td><td>$count_num</td></tr>"; 11 } 12 return $all_row; 13} 14
###試したこと
関数内にデータベース接続に関する内容を記述した(connect_by_pdo.php)
接続に使われている$dbを関数内でグローバル宣言した
###補足情報(言語/FW/ツール等のバージョンなど)
回答3件
あなたの回答
tips
プレビュー