使用FetchAll的PHP创建函数

使用FetchAll的PHP创建函数,php,mysql,function,pdo,Php,Mysql,Function,Pdo,我正试图开发一个开源项目,但我遇到了一些问题。 我使用的是一个PHP函数文件,所有函数都是在这里编写的。它包含以下内容: functions.php 这是我的index.php 当我调用函数getCategories时,屏幕上没有显示任何内容 我尝试了很多在这个网站上找到的其他方法,但都没有正常工作 如果你们能帮我,那就太好了 谢谢发生的情况是变量$conn不存在,因为您现在声明了一个函数。您需要在函数中以参数或全局变量的形式传递连接变量。如果您只有一个php文件,它可以从数据库中获取类

我正试图开发一个开源项目,但我遇到了一些问题。 我使用的是一个PHP函数文件,所有函数都是在这里编写的。它包含以下内容:
functions.php


这是我的index.php


当我调用函数getCategories时,屏幕上没有显示任何内容

我尝试了很多在这个网站上找到的其他方法,但都没有正常工作

如果你们能帮我,那就太好了


谢谢

发生的情况是变量
$conn
不存在,因为您现在声明了一个函数。您需要在函数中以参数或全局变量的形式传递连接变量。如果您只有一个php文件,它可以从数据库中获取类别,而不使用函数,那么您就不会面临变量作用域的问题

选项1:

<?php 
include 'inc/db.php';
    function getCategories($conn){//pass connection as a parameter
    $sqlGetCategories = $conn->prepare("SELECT name FROM categories");
    $sqlGetCategories->execute();//returns true/false
    return $sqlGetCategories->fetchAll();
    }
?>
<?php
include 'inc/db.php';
    function getCategories(){
    global $conn;//use as a global variable(Although i prefer option1)
            $sqlGetCategories = $conn->prepare("SELECT name FROM categories");
            $sqlGetCategories->execute();
            return $sqlGetCategories->fetchAll();
            }

            ?>

或:

选项2:

<?php 
include 'inc/db.php';
    function getCategories($conn){//pass connection as a parameter
    $sqlGetCategories = $conn->prepare("SELECT name FROM categories");
    $sqlGetCategories->execute();//returns true/false
    return $sqlGetCategories->fetchAll();
    }
?>
<?php
include 'inc/db.php';
    function getCategories(){
    global $conn;//use as a global variable(Although i prefer option1)
            $sqlGetCategories = $conn->prepare("SELECT name FROM categories");
            $sqlGetCategories->execute();
            return $sqlGetCategories->fetchAll();
            }

            ?>


阅读有关变量作用域的详细信息

$conn
未定义。您可以使用
$conn
作为全局变量,或将其作为参数传递到函数中,或者更好的做法是使用带有constructor@Akintunde它可能在db里面。php@CodeIt这不会使它在函数的scope@CodeIt不,它不在那里。OP有一个功能。
$conn
不可能工作。阅读更多关于变量scopesYep的内容,$conn应该声明为全局$conn。不过我很乐意