PHP使用FetchAll

时间:2017-05-26 09:44:46

标签: 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 时,屏幕上不显示任何内容。

我在网站上尝试了很多其他方法,没有任何正常工作。

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

由于

1 个答案:

答案 0 :(得分:1)

当您现在声明了一个函数时,变量$conn不存在会发生什么。您需要将连接变量作为参数或函数中的全局变量传递。如果你只有一个php文件从数据库中获取类别而不使用函数,那么你就不会遇到变量范围的问题

<强> OPTION1:

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

OR:

<强> OPTION2:

<?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