2017-05-26 26 views
0

我正在嘗試開發一個開源項目,但我遇到了一些問題。 我正在使用一個PHP函數文件,其中寫入了我的所有函數。它包含了這一點:
的functions.php
使用FetchAll創建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沒有任何顯示在屏幕上。

我嘗試了很多在這個網站上找到的其他方式,沒有任何工作正常。

如果你們能幫助我,那會很棒。

感謝

+0

'$ conn'未定義。你可以使用'$ conn'作爲全局變量,或者將它作爲參數傳遞給你的函數,或者更好地使用帶有構造函數的類 – Akintunde007

+0

@Akintunde它可能在db.php裏面 – CodeIt

+0

@CodeIt不會讓它在函數的作用域 –

回答

1

什麼情況是,該變量$conn不存在,你現在有一個函數聲明。您需要將您的連接變量作爲參數或作爲全局變量傳遞給您的函數。如果你只是有一個PHP文件,該文件會從你的數據庫的類別不使用的功能,那麼你wouldnt't面臨變量的作用域

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

+0

非常感謝,這個解決方案運作良好! – lezogeek

+0

請標記爲已接受@lezogeek – Akintunde007

+0

儘管我很高興 – Akintunde007