PHP 使用 FetchAll 创建函数

标签 php mysql function pdo

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

<?php include 'inc/db.php';
function getCategories(){
$sqlGetCategories = $conn->prepare("SELECT name FROM categories");
$sqlGetCategories->execute();
return $sqlGetCategories->fetchAll();
}
?>

这是我的index.php

<?php include 'inc/functions.php';
$listeCategories = getCategories();
foreach($listeCategories as $row) {
    echo "<option>"; echo $row['name']; echo "</option>";
}?>

当我调用函数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();
    }
?>

或者:

选项2:

<?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();
            }

            ?>

了解有关变量作用域的更多信息 here

关于PHP 使用 FetchAll 创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198422/

相关文章:

javascript - 检查按钮是否被单击 执行其他操作 不执行任何操作

php - 图像保护(确保用户无法窃取照片)

java - 如何将数据加载到表中并清除之前加载的数据?

c++ - 为什么必须内联定义在类外部(但在头文件中)的类成员函数?

C 在函数中分配动态内存 - 相同的结果

php - password_verify 不断带回假

php - 将数据库中的字段与php中的整数进行比较

mysql - 2 个 MySQL 安装(现在丢失了一个)

mysql - 将文本文件导入到 MySQL 数据库错误

c++ - 指向成员函数的指针