- 現状
下のfetch部分の関数化しようと試みたところ、下のようなエラーが吐かれた。
function getName(){ $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); } $getName = getName(); echo $getName; echo "<br>";
Fatal error: Uncaught Error: Call to a member function fetchAll() on null in /var/www/html/index.php:50 Stack trace: #0 /var/www/html/index.php(60): getName() #1 {main} thrown in /var/www/html/index.php on line 50
エラー文にある「line 50」はfunction内の「$result = $stmt->fetchAll(PDO::FETCH_ASSOC);」に、
「line 60」は「$getName = getName();」にあたります。
- 考えられること/試してみたこと
エラー文を紐解くと、feachAllが正常に動作しないという事が分かり、
「$result = $stmt->fetchAll(PDO::FETCH_ASSOC);」の「PDO::FETCH_ASSOC」部分に原因があるとまでは考えられました。
しかし、具体的にその先をどのようにするかの筋道が見えません。
どなたか解決策の教授をしてもらえないでしょうか?
- 追記
コメントいただいた方から、「$stmtの定義がない」という指摘をいただきましたが、
すいません、書いてなかっただけでfunction部分の前の部分であります。
そのため、
$sql = "SELECT * FROM `users`,`user_id` LIMIT 20"; $stmt = $dbh->prepare($sql);//←ここが$stmtの定義 $stmt->execute(); function getName(){ $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); } $getName = getName(); echo $getName; echo "<br>";
が、現状のコードです。
DBからusers
,user_id
を20件取り出し、ブラウザ上に表示させる過程で関数化をしようとしています。
改めて、解決方法をどなたかご教授おねがいします。
回答3件
あなたの回答
tips
プレビュー