我正在尝试开发一个开源项目,但遇到了一些问题。
我正在使用 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/