2015-05-19 123 views
0

我有一個小問題。我有一個php函數,它在頁面內時可以很好地工作。這是從外部文件打印PHP函數

$selectQuery = "SELECT DISTINCT product_code FROM product;"; 
$List = mysql_query($selectQuery, $Connection) or die("ERROR".mysql_error()); 

    while($Output = mysql_fetch_array($List)) 
    { 
     echo "<option value='".$Output[0]."'>".$Output[0]."</option>"; 
    } 

但是當我把它包括的地方,我把我的功能和除從那裏叫它文件時,它輸出無爲而無不爲這低於它不輸出爲好。 這裏是函數調用:

<select name="Selector" > 
    <option value="">--Select Product--</option> 
    <?php printProductBox("SELECT DISTINCT product_code FROM product;"); ?> 
    </select> 

這裏是在函數文件,該文件也被前面的頁面包含的功能:

function printProductBox($ParameterQuery){ 
    include ('DatabaseVariables.php'); 
    $List = mysql_query($ParameterQuery, $Connection) or die("ERROR".mysql_error()); 

    while($Output = mysql_fetch_array($List)){ 
     echo "<option value='".$Output[0]."'>".$Output[0]."</option>"; 
    } 
} 

數據庫證書文件都在主頁面包括並在函數文件中(函數文件也包含在頁面中)。 該文件的其他功能正在主頁面中工作。所以我想知道爲什麼這個功能有問題?

有沒有人有任何線索?

+0

錯誤日誌說什麼?該查詢的結果是什麼? – tubaguy50035

+1

看起來'$ Connection'沒有在'printProductBox'函數的範圍內定義。 –

+0

沒有錯誤 –

回答

0

把這個在您的函數的開始:

global $Connection; 

編輯的新建議,這可能有助於如果連接已經建立,嘗試更換舊版本的這些行:

<?php printProductBox("SELECT DISTINCT product_code FROM product;", $Connection); ?> 

function printProductBox($ParameterQuery, $Connection){ 
+0

我有一個特定的文件,我插入連接的詳細信息 –

+0

我應該將全局變量添加到那裏的所有變量嗎? –

+0

我這樣調整函數function printProductBox($ ParameterQuery)include('DatabaseVariables.php'); $ List = mysql_query($ ParameterQuery,$ Connection)或者die(「ERROR」.mysql_error()); \t \t \t 而\t($輸出= mysql_fetch_array($列表)){ \t \t \t回聲 「<選項值= '」。$輸出[0]。 「'>」。$輸出[0]。「」; \t \t} \t}' –

0

問題是缺少憑證。 憑證必須包含在功能範圍內。我想知道是否有辦法聲明全局變量。所以我不會在每個函數中包含相同的文件。

+0

如果你不把調用返回到'mysql_connect()'到一個變量,連接本身將是全局的。然後你只需要運行'mysql_query($ query)',其餘的就自行處理。 [PHP/mysql_query()](http://php.net/manual/en/function.mysql-query.php)指定第二個參數是可選的。 –